[英]insert value to foreign key
問題在於外鍵:
INSERT語句與FOREIGN KEY約束“ FK_uzytkownik_Logowanie”沖突。 數據庫“ Restauracja”的表“ dbo.Logowanie”的列“ LoginID”中發生了沖突。
該語句已終止。
我使用斷點進行檢查,並在斷點(正在運行的應用程序)之后添加了Logowanie
表中的主鍵
baza.SubmitChanges();
的主鍵LoginID
在logowanie
表過程中自動添加SubmitChanges
。
如何復制的價值LoginID
從logowanie
表LoginID
在uztkownik
表? 我在此處添加外鍵值,但此處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.