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

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");
        }
    }
}

 
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.

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:

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.

0

spróbuj tak:

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)
); 
0

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

0

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

0

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

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ą.

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.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1