繁体   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