我目前有一个由数据库视图支持的EF类(连接多个表)。为了使其可更新,我需要更改由数据库表支持的类。我正在使用Entity Framework 4.1 Code First,无法弄清楚如何建立这些关系?
为了简化,我目前有一个Categories类,它返回Category Name(Categories表)和Category Type Name(CategoryTypes表)。这些都在我当前使用的数据库视图中。我想更改为ViewModel,它直接从其表中返回这两个字段并正确连接,这样当用户更新类别名称时,EF应该能够正确处理更新(因为它将更新表而不是(视图)。关于如何做到这一点的任何提示?
答案 0 :(得分:2)
表是一个表 - 它是一个单独的数据库对象。如果要删除视图并将其替换为表,则需要删除当前表(Categories
和CategoryTypes
)并创建一个包含非规范化数据的表。这是非常糟糕的解决方案,它会在整个应用程序中引起问题。
只是为了简化描述:无法用表格替换多个表之间的连接构造的视图,并且无法使视图可更新。
您做错了,因为您显然是将视图模型直接映射到数据库。将Catagories
和CategoryTypes
映射到实体,使用Category
加载CategoryType
,并将它们展平到应用程序逻辑中的视图模型(或通过投影加载视图模型)。用户更新后,您的视图模型会将其分解回单独的实体并保存。