1

假设我有以下实体:

Public Class Dodo
    Public Property ID As Integer

    Public Property Name As String

    Public Overridable Property Mother As DodoMother
End Class

Public Class DodoMother
    Public Property ID As Integer

    Public Property Name As String

    Public Property Age As Integer
End Class

我需要能够在设置后将 Dodo.Mother 设置为空。

IE

Dim ndodo as dodo = db.Dodos.find(1)
ndodo.Mother = nothing
db.SaveChanges()

当我执行上面的代码时,我没有收到错误或异常或任何表明该语句不起作用的东西。ndodo 对象似乎没有将 Mother 设置为 null 并且数据库没有得到更新。

难道我做错了什么?我也尝试添加 db.Entry(ndodo).State = EntityState.Modified 但这也不起作用。

4

2 回答 2

1

您需要为 DodoMother 向 Dodo 添加一个 Id 属性并将其设置为空。

Public Property MotherId as Integer?

您的财产“母​​亲”是 Navagation 财产。导航属性不是数据库表的一部分,它们是实体类的一部分。

于 2012-06-05T17:54:51.043 回答
0

谢谢JLH :)

Public Property MotherID() As Nullable(Of Integer)

Public Overridable Property Mother() As DodoMother

和以下代码删除母亲

Dim ndodo as dodo = db.Dodos.find(1)
ndodo.MotherID = nothing
db.SaveChanges()
于 2012-06-05T19:39:06.640 回答