更新实体框架5到6:ObjectStateManager,AddObject,DeleteObject,ExecuteStoreCommand不是

时间:2016-07-11 09:52:52

标签: asp.net-mvc entity-framework entity-framework-6

我已将我的项目从Entity Framework 5更新为6.因此,删除了对System.Data.Entity.dll的所有程序集引用,并添加了新的(EntityFramework.dll和EntityFramework.SqlServer)。最后我添加了"代码生成的项目"到EF6的EDMX文件并编译了我的项目。

我现在的问题是我无法访问ObjectStateManager,AddObject,DeleteObject和ExecuteStoreCommand?

例如:

db.DATATABLE.AddObject(dataObject)

传播错误:' AddObject'不是System.Data.Entity.DbSet(Of Data.CMS_IMAGES)'的成员。

BTW:我使用的是Oracle ManagedDataAccess客户端。

1 个答案:

答案 0 :(得分:1)

这就是我将我的代码从ObjectContext重写为DbContext的方式。

删除

Public Sub Delete(id As Decimal)
    Dim dataObject As New DATATABLE() With {.ID= id}
    db.Entry(dataObject).State = System.Data.Entity.EntityState.Deleted
    db.SaveChanges()
End Sub

插入和更新

Public Sub InsertOrUpdate(id As Decimal, value1 As String, value2 As String)
    Dim dataObject As New CMS_USER_TO_ROLE With {
        .ID= id,
        .VALUE1= value1,
        .VALUE2= value2
    }

    'db.DATATABLE.Add(dataObject)
    db.Entry(dataObject).State = If(userToRoleId = 0, System.Data.Entity.EntityState.Added, System.Data.Entity.EntityState.Modified)
    db.SaveChanges()
End Sub 

SQL命令

db.ExecuteStoreCommand("UPDATE ...")更改为db.Database.ExecuteSqlCommand("UPDATE ...")