我正在处理包含50多个包含大量数据的表的应用程序。
假设我有两张桌子:
Parent { pID int (PK), pName varchar(30) }
和
Child { pID int (FK), cName varchar(30) }
这是我的问题:
using(MyDBContext ctx = new MyDBContext())
{
Child ch = ctx.Childs.Where( c => c.pID == 1).FirstOrDefault();
ch.cName = "ABCDEF";
ctx.SubmitChanges(); // <--- Executes but nothing changes...
}
我尝试了多个现有值,但更新子记录时ctx.SubmitChanges()
不起作用。任何解决方法?
答案 0 :(得分:0)
无法更新表格,因为它没有主键。如果您的桌子(孩子)上没有主键,SubmitChanges将无效。在Child表上设置主键,如下所示
Child { ID int (PK), pID int (FK), cName varchar(30) }
并且可以通过确定
答案 1 :(得分:0)
我自己找到了解决方案。我创建了一个更新记录的SQL过程。这是我怎么做的:
create procedure UpdateChildName
(
@pID int,
@name varchar(30)
)
AS
BEGIN
update Child set cName = @name where pID = @pID;
END;
Linq to SQL Part:
using(MyDBContext ctx = new MyDBContext())
{
ctx.UpdateChildName(1, "ABCDE");
ctx.SubmitChanges(); // <--- Now working great.
};
现在,我对FK或PK依赖没有任何问题......:)