如果存在任何继承,则在保存基类时实体框架错误

时间:2015-03-12 16:34:41

标签: vb.net entity-framework inheritance

我使用的是EF 6.1。我从我的数据库直接从向导构建了一个模型“请求”。在我的上下文文件(EMContext.vb)中我有

Public Overridable Property Requests As DbSet(Of Request)

当我输入

        Dim db As New EMContext
    Dim req As New Request()
    With req
        .RequestedBy = "bar"
        .EventName = "Goo"
        .RequestedOn = Now
        .RequestStatusID = 1
    End With

    db.Requests.Add(req)
    db.SaveChanges()

一切都按预期完成。没问题。它节省了。 但是,如果我添加一个类(在应用程序中的任何位置)

    Class foo
       Inherits Request

       Public Property s As String
    End Class

然后运行完全相同的代码

  

{“更新条目时发生错误。有关详细信息,请参阅内部异常。”}

查看内部异常:

  

{“无效的列名称'。   列名称'Discriminator'无效。“}

为什么它甚至会查看继承的类属性? 顺便说一句,如果我从继承的类中删除所有属性,我仍然会收到无效列'判别器'错误。

1 个答案:

答案 0 :(得分:0)

然后创建一个json解析的自定义类,然后你可以调用Entity并从这个类中创建它。

<Serializable()>
Public Class jSonParsedObject
  'properties that match the Entity object
  'custom properties you need for other work
End Class

用法:

Dim jsonObj As jSonParsedObject = SomeMethodThatParsesAndReturnsData()
Dim req As New Request()
With req
    .RequestedBy = jsonObj.RequestedBy
    .EventName = jsonObj.EventName
    .RequestedOn = jsonObj.RequestedOn
    .RequestStatusID = jsonObj.RequestStatusID
End With
...