2011-07-08 36 views
2

我现在有由一个数据库视图(加入多个表)支持的EF类。为了使其可更新,我需要更改要由数据库表支持的类。我正在使用Entity Framework 4.1 Code First,并且无法弄清楚如何建立这些关系?EF代码优先 - 实体加入多个表

为了简化,我现在有一个分类类返回类别名称(分类表)和类别类型名称(CategoryTypes表)。这些都在我目前使用的数据库视图中。我想更改为一个ViewModel,它可以直接从表中返回这两个字段并正确连接,这样,当用户更新类别名称时,EF应该能够正确处理更新(因为它将更新表的观点)。有关如何做到这一点的任何提示?

回答

2

表是一个表 - 它是一个单一的数据库对象。如果要删除视图并将其替换为表格,则需要删除当前表格(CategoriesCategoryTypes),并创建一个包含非规格化数据的表格。这是非常糟糕的解决方案,它会在整个应用程序中造成问题。

只是为了简化描述:这是不可能取代您的观点通过构建一个表中的多个表之间的连接,这是不可能的,让您的视图更新。

你这样做是错误的,因为你显然直接映射视图模型到数据库中。地图​​和CategoryTypes到实体加载CategoryCategoryType和应用程序中的逻辑他们压扁到您的视图模型(或通过投影加载视图模型)。用户更新视图模型后,将其分解回单独的实体并保存。

+0

谢谢拉迪斯拉夫!我们已经讨论过这是一个可能的解决方案,但我们仍然不够确定。所以,很高兴得到您的确认!现在,重构! – user835320