LINQ + SQL

0

Piszę aplikację bazodanową za pomocą LINQ TO SQL.
Problem przedstawia się nastepująco
są 2 tabele połaczone relacją typu master -details.
Podczas usywania rekordu details wystepuje wyjątek "An attemt was made to remove a relationship between TMaster and TDetails". However, one of the relationship's foregin keys (TDetails.IDtmaster) cant be set to null).
Usuwanie z tabeli TMaster odbywa sie bez problemu. Na tej samej bazie za pomocą DataSet też nie ma problemu. Nie wiem dlaczego LINQ ma z tym problem.
Dzięki za sugestie.
Pozdrawiam

0

Masz blad w kodzie. Bez kodu to sie raczej nie dowiesz jaki to blad ;)

0

Nie jestem pewien, czy do końca rozumem, ale chyba chcesz usunąć element z tabeli, do którego istnieje jeszcze odwołanie np.

Książki:
K1 (Autor=1)
K2 (Autor=1)
K3 (Autor=3)

Autorzy:
A1 (Klucz=1)
A2 (Klucz=2)
A3 (Klucz=3)

Gdy usuwasz A2, to wszystko będzie wporządku, ale A3 nie usuniesz, bo wtedy K3 nie miałoby odpowiedniego autora.
Najlepie sprawdź, czy w bazie nie masz żadnych odwołań tego typu.


A przy okazji tak już nie na temat, to dlaczego mnie już po raz 3 wylogowało w ciągu ostatnich 5 min z forum, i znów nie mogę się zalogować

0

To oczywiste ale ten błąd powstaje przy usuwaniu K3 używając Twojej nomenklatury.
A kod jest bardzo prosty

tSkazancyBindingSource.DataSource = bazaskazancy.TSkazancies;
tWyrokisBindingSource.DataMember=TWyrokis;
tWyrokisBindingSource.DataSource=tSkazancyBindingSource;

I USUWANIE:

try
{
tWyrokisBindingSource.RemoveCurrent();
bazaskazancy.SubmitChanges();
MessageBox.Show("Usunięto", "Komunikat", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception exc)
{
MessageBox.Show("Usunięcie nie powiodło się: " + exc.Message);
}

0

1 raz widze takie rzeczy.
Tak sie powinno usuwac rzeczy:

CustomerDataContext ctx = new CustomerDataContext("connection string");

Customer cust = ctx.Customers.Where(c =c.CustomerID == "ALFKI").Single();
ctx.Customers.DeleteOnSubmit(cust);
ctx.SubmitChanges();

0

malo widziales.. albo moze zapomniales ze istnieje cos takiego jak BindingSource i standardowy model wiazania danych do formatek opartych na winforms ? bindingsource jak widac przekazuje 'sygnal' usuniecia w dol hierarchii wiazania, inaczej delikwent nie zobaczylby wyjatku tylko .. brak reakcji. IMHO autor musi sie wpierw zdecydowac, na ktorej 'warstwie' chce operowac.. tutaj fakt, tak jak sugerujesz, najbezpieczniej byloby zostawic BS tylko do wiazania wartosci do formatek, a same modyfikacje relacji wykonywac recznie..

a tak na przyszlosc i w kontekscie innych postow: jak Ci sie nie chce, to nie pisz.. jak juz piszesz, to pisz to tak, zeby odbiorca na swoim poziomie byl w stanie zrozumiec o co Ci chodzi..

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