簡體   English   中英

將值插入外鍵

[英]insert value to foreign key

問題在於外鍵:

INSERT語句與FOREIGN KEY約束“ FK_uzytkownik_Logowanie”沖突。 數據庫“ Restauracja”的表“ dbo.Logowanie”的列“ LoginID”中發生了沖突。
該語句已終止。

我使用斷點進行檢查,並在斷點(正在運行的應用程序)之后添加了Logowanie表中的主鍵

baza.SubmitChanges();

的主鍵LoginIDlogowanie表過程中自動添加SubmitChanges

如何復制的價值LoginIDlogowanieLoginIDuztkownik表? 我在此處添加外鍵值,但此處LoginID尚未值。

Logowanie newlog = new Logowanie()
{
   Login = model.LoginModel.Użytkownik,
   Haslo = model.LoginModel.Hasło,
   konto = model.LoginModel.Konto
};

uzytkownik user = new uzytkownik()
{
   imie = model.uzytkownikModle.imie,
   nazwisko = model.uzytkownikModle.nazwisko,
   pesel = model.uzytkownikModle.pesel,
   nip = model.uzytkownikModle.nip,
   telefon = model.uzytkownikModle.telefon,
   adres_zamieszkania = model.uzytkownikModle.adres_zamieszkania,
   email = model.uzytkownikModle.email,
   LoginID = newlog.LoginID //<<<----------------
};

baza.Logowanies.InsertOnSubmit(newlog);
baza.uzytkowniks.InsertOnSubmit(user);

baza.SubmitChanges();

uzytkownik應該具有一個名為Logowanie的屬性,您可以將其設置為創建的新實例,但尚未提交:

user.Logowanie = newlog;

由於它是外鍵關系,因此您的Logowanie類應包含IQueryable<uzytkownik>的屬性,該屬性用於以一對多的方式正確關聯對象。 結果,不再需要手動分配外鍵,可以通過對象繼承來完成:

Logowanie newlog = new Logowanie()
{
   Login = model.LoginModel.Użytkownik,
   Haslo = model.LoginModel.Hasło,
   konto = model.LoginModel.Konto
};

uzytkownik user = new uzytkownik()
{
   imie = model.uzytkownikModle.imie,
   nazwisko = model.uzytkownikModle.nazwisko,
   pesel = model.uzytkownikModle.pesel,
   nip = model.uzytkownikModle.nip,
   telefon = model.uzytkownikModle.telefon,
   adres_zamieszkania = model.uzytkownikModle.adres_zamieszkania,
   email = model.uzytkownikModle.email,
   // Remove this line entirely   LoginID = newlog.LoginID //<<<----------------
};

// Add the child object (user) to your Logowanie object (newlog)
newlog.uzytkowniks.Add(user)  // This may just be uzytkownik. Pluralization in LINQ is weird

// It is not necessary to queue the user object for insertion
// the newlog object will do that for you
baza.Logowanies.InsertOnSubmit(newlog);
// baza.uzytkowniks.InsertOnSubmit(user);

// SubmitChanges at this point will insert all of the children
// of newlog and assign the IDs properly
baza.SubmitChanges();

// at this point you should be able to get the newlog.LoginID
// and the user.UserID (assuming this is what you called it)

當我第一次遇到這個問題時,對我來說似乎有點倒退,但是一旦將這些關系分解為它們的類表示形式,它便開始變得有意義。 它為您完成所有關系分配也很神奇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM