ASP.NET MVC - 无法设置overrideable属性=什么都没有?

时间:2012-06-05 15:47:51

标签: asp.net-mvc vb.net asp.net-mvc-3 entity-framework

假设我有以下实体:

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设置为有时没有设置。

即。

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

当我执行上面的代码时,我没有收到错误或异常或任何表明该语句无效的内容。 ndodo对象似乎没有将Mother设置为null,并且DB不会更新。

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

2 个答案:

答案 0 :(得分:1)

您需要为DodoMother的Dodo添加Id属性,并将其设置为空。

Public Property MotherId as Integer?

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

答案 1 :(得分: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()