【问题标题】:EF Code First - Entity joining multiple tablesEF Code First - 实体加入多个表
【发布时间】:2011-07-08 12:09:23
【问题描述】:

我目前有一个由数据库视图支持的 EF 类(连接多个表)。为了使其可更新,我需要将类更改为由数据库表支持。我正在使用 Entity Framework 4.1 Code First,但不知道如何设置这些关系?

为了简化,我目前有一个 Categories 类,它返回 Category Name(Categories 表)和 Category Type Name(CategoryTypes 表)。这些都在我当前使用的数据库视图中。我想更改为直接从他们的表中带回这两个字段并正确连接的 ViewModel,这样当用户更新类别名称时,EF 应该能够正确处理更新(因为它将更新表而不是的观点)。有关如何执行此操作的任何提示?

【问题讨论】:

    标签: entity-framework-4 ef-code-first code-first


    【解决方案1】:

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

    只是为了简化描述:不可能用一个表替换由多个表之间连接构建的视图,也不可能使您的视图可更新。

    您做错了,因为您显然将视图模型直接映射到您的数据库。将CatagoriesCategoryTypes 映射到实体加载Category 及其CategoryType 并将它们展平到应用程序逻辑中的视图模型(或通过投影加载视图模型)。用户更新您的视图模型后,将其分解回单独的实体并保存。

    【讨论】:

    • 感谢拉迪斯拉夫!我们曾将其作为一种可能的解决方案进行讨论,但我们还不够新,无法确定。所以,很高兴得到您的确认!现在,开始重构!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 2017-07-02
    相关资源
    最近更新 更多