问题在于外键:
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();
答案 0 :(得分:0)
uzytkownik应该有一个名为Logowanie的属性,您可以将其设置为您创建但尚未提交的新实例:
user.Logowanie = newlog;
答案 1 :(得分:0)
由于它是外键关系,因此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)
当我第一次遇到这个时,对我来说似乎有些落后,但是一旦你把关系分解成他们的班级表示,它真的开始变得有意义了。它为你做所有关系任务也很棒。