Problem z .sdf - po próbie dodania do bazy rekordów z auto id

Odpowiedz Nowy wątek
2011-09-23 13:39
Wodzu
0

Witam Was bardzo serdecznie :)

Mam problem z dodawaniem do bazy lokalnej danych. Utworzyłem swoją bazę pod VS 2010 a do komunikacji z nią używam C# + Entity Framework. Jeśli utworzę np. tabelkę Produkty (ProduktID, Nazwa, Cena) i ustanowię ProduktID jako kolumnę do której za każdym razem muszę wpisywać id ręcznie (zostawiam "Identity" na false) wszystko działa poprawnie.

Wtedy dane dodaję tak:

            Product produkt = new Product();
            produkt.ProductID = Int32.Parse(productID.Text);
            produkt.Nazwa = name.Text;
            produkt.Cena = Decimal.Parse(cena.Text);

            this.supplier.Products.Add(produkt);
            this.productsInfo.Add(produkt);

            productsList.DataContext = this.productsInfo;
            baza.SaveChanges();

i wszystko działa jak należy. Jednakże zbędne jest żebym za każdym razem wpisywał id, które tylko daje podstawę klucza głównego w bazie, więc chciałem aby ProductID był generowany automatycznie i przy każdym nowym wpisie jego wartość się inkrementowała. Dlatego utworzyłem jeszcze raz tabelkę Produkty z tym że ustanowiłem ProductID na generującą auto increment id (dałem "Identity" na true, "Identity Increment" na 1 i Identity Seed" na 1).

Wtedy dane dodaję tak:

            Product produkt = new Product();
            //produkt.ProductID = Int32.Parse(productID.Text); // nie dodaję ProductID
            produkt.Nazwa = name.Text;
            produkt.Cena = Decimal.Parse(cena.Text);

            this.supplier.Products.Add(produkt);
            this.productsInfo.Add(produkt);

            productsList.DataContext = this.productsInfo;
            baza.SaveChanges();

Problem w tym, że przy próbie wywołąnia "baza.SaveChanges" wywala System.Data.UpdateException. Bardzo proszę o pomoc gdyż męczę się już z tym 3 dzień i chyba już nie dam rady :)

PS: Przy próbie zrobienia projektu z bazą .mdf wszystko mi działało bardzo dobrze bo ProductID generował się automatycznie i nie wywalało wyjątków. Jednak zależy mi na działaniu bazy lokalnej .sdf.

Z góry dziękuję wszystkim z pomoc i pozdrawiam :)

Pozostało 580 znaków

2011-09-23 14:59
0

A może podziel się bardziej szczegółowo błędem :-)

Pozostało 580 znaków

2011-09-23 19:31
Wodzu
0

Dzięki za zainteresowanie moim tematem :)

Program wyrzuca mi ten wyjątek : System.Data.UpdateException w trakcie działania programu gdy chcę zapisać dane w bazie. Debugger pokazał mi, że błędem jest ta linijka :

 baza.SaveChanges(); 

Otrzymuję taki błąd

An unhandled exception of type 'System.Data.UpdateException' occurred in System.Data.Entity.dll
Additional information: An error occurred while updating the entries. See the inner exception for details.

w Inner Exception mam coś takiego :

InnerException {"An error occurred while preparing the command definition. See the inner exception for details."} System.Exception {System.Data.EntityCommandCompilationException}

O dziwo gdy dałem komentarz na "baza.SaveChanges();", dane które wpisałem do formularza zaczęły się dodawać z tym że oczywiście nie mogę zapisać zmian w bazie :( Dzięki za pomoc :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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