【发布时间】:2018-02-14 19:40:08
【问题描述】:
我正在使用 vb.net 2013、Entity Framework 6 和 SQL Server 2008 R2。
我正在尝试从子实体中删除,但这不起作用。但是,如果我尝试直接从上下文中删除,这是可行的。
在我的数据库中,我有 2 个表 Students 和 Result。
这是我的代码不起作用:
Dim context as Myentities = New myentities.
Dim s as student.
Dim lresult as new list (of result)
s = context.students.where(Function(t1) t1.value>5).Tolist.first
lresult = (from t in s.results where t.vl2=7 select t).Tolist
for each rs as result in lresult
if rs.vl3=11 then s.results.remove(rs)
Next
Context.SaveChanges
此代码在最后一行产生错误 (context.SaveChanges):
EntityFramework.dll 中出现“System.InvalidOperationException”类型的未处理异常
附加信息:操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
但如果我更改删除项目的行,如下所示,它可以工作:
Dim context as Myentities = New myentities.
Dim s as student.
Dim lresult as new list (of result)
s = context.students.where(Function(t1) t1.value>5).Tolist.first
lresult = (from t in s.results where t.vl2=7 select t).Tolist
for each rs as result in lresult
if rs.vl3=11 then context.results.remove(rs)
Next
Context.SaveChanges
为什么我的第一个 sn-p 代码不起作用?
【问题讨论】:
标签: vb.net entity-framework entity-framework-6