c#/LINQ to SQL - insertonsubmit()

c#/LINQ to SQL - insertonsubmit()
0

Witam,

Od 2 dni męczę się z problemem. Napisałem prostą aplikację webową w Web forms z bazą danych sql używając LINQ. Wszystko pięknie chodziło. Wpadłem na pomysł że mogę ją jednak zrobić w wersji desktopowej w windows forms. I tu z jakiegoś powodu nie chcą mi się zapisać dane do bazy. Kod jest dokładnie taki sam (skróciłem go teraz do jednej tabeli i jednej kontrolki). Dalej nie działa. Debugowałem i według mnie wszystko jest ok, ale przy komendzie insertonsubmit() dane nie są wpisywane. Będę wdzięczny za pomoc.

Używam windows 8, windows visual for desktop 2013, for web 2013

W załączniku jest cały projekt

Kopiuj
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DataClasses1DataContext db = new DataClasses1DataContext();
            osoba obj = new osoba();

            obj.nazwa ="Anna";

            db.osobas.InsertOnSubmit(obj);
            db.SubmitChanges();
            MessageBox.Show("ok");
        }
    }
}

 
N0
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Kraków
  • Postów:767
0

W MS SQL Server jak masz pole ID to możesz je ustawić aby było "Identity Specification" -> "Is Identity" i Ty tego nie miałeś ustawionego, a ponieważ ustawiłeś że pole nie może być null no to się nie zapisywało do bazy - bo Ty tego pola nie ustawiałeś w kodzie.

Po tej zmianie program zapisuje do bazy wartość Anna.


Pomogłem? To dobrze :)
edytowany 3x, ostatnio: ne0
0

hej dzięki za odpowiedź. To co napisałeś ma sens. Ale nadal u mnie lipa. Zmieniłem pole id na is identity na true.
Tutaj pełna tresć sqla:

Kopiuj
CREATE TABLE [dbo].[osoba] (
    [Id]    INT        IDENTITY (1, 1) NOT NULL,
    [nazwa] NCHAR (10) NULL,
    CONSTRAINT [PK_osoba] PRIMARY KEY CLUSTERED ([Id] ASC)
);
0

spróbowałem też ustawić z powrotem identity na false, a id dodatkowo wpisywałem sam. I dalej to samo.

N0
zaladuj ten projekt na nowo. aktualny,
N0
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Kraków
  • Postów:767
0

spróbuj tak:

Kopiuj
CREATE TABLE [dbo].[osoba] (
    [Id]    INT        IDENTITY (1, 1) NOT NULL AUTO_INCREMENT,
    [nazwa] NCHAR (10) NULL,
    CONSTRAINT [PK_osoba] PRIMARY KEY CLUSTERED ([Id] ASC)
); 

Pomogłem? To dobrze :)
0

AUTO_INCREMENT nie wchodzi, nie ma takiego słowa kluczoego, zamiast tego własnie chyba powinno dzialac identity

JA
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:1
0

Witam!
Mam ten sam problem. Czy udało Ci się go rozwiązać?

GR
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Leonardów
  • Postów:13
0

Również mam taki problem. Zna ktoś rozwiązanie?

Sebastiano
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 4 lata
  • Postów:488
0
jaczo napisał(a):

Witam!
Mam ten sam problem. Czy udało Ci się go rozwiązać?

A spróbuj wyłączyć auto-inkrementacje w panelu zarządzania bazą.

GR
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 9 lat
  • Lokalizacja:Leonardów
  • Postów:13
0

Wyłączałem. Problem jest tylko z lokalną bazą danych tworzoną w visual studio. W momęcie gdy podłączam tą samą baze stworzą w sql Serwer menagment wszystko działa jak należy.

N0
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Kraków
  • Postów:767
0

opakuj tą komendę saveChanges blokiem try/catch i zobacz czy bedzie jakis wyjatek, jesli tak to jaki


Pomogłem? To dobrze :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.