我已将我的项目从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客户端。
答案 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 ...")