【问题标题】:Using EntityFramework C# code-first from database - how to map table with no primary key从数据库中使用 EntityFramework C# 代码优先 - 如何映射没有主键的表
【发布时间】:2017-05-22 14:11:31
【问题描述】:

我正在使用 EntityFramework c# 构建一个 Ntier 应用程序。 我正在使用现有数据库中的代码优先方法在我的数据访问层中添加实体数据模型。

我的数据库的一些表没有包括在内,因为它们没有主键。我已经看到了一些解决这个问题的方法,修改 EntityFramework 的 edmx 以强制映射到数据库,伪装一些字段,比如一个键。但我没有使用 .edmx,因为我不能使用自动迁移。我只从我现有的数据库中生成 POCO,然后继续进行代码优先迁移。

有没有办法强制实体框架为那些没有主键的表生成 POCO?有些只有一个条目,真的不需要PrimaryKey

【问题讨论】:

  • 根据我的经验,没有主键的表是个坏主意。你可以解决这个问题,但我建议不要这样做。
  • 在此处了解更多信息:stackoverflow.com/questions/3996782/…
  • 为什么不把表格转换成PK?解决这个问题将是一个主要的 PITA。
  • 实体框架如何知道在没有主键的情况下要更新哪条记录?可以添加主键吗?索引视图怎么样?如果没有,您可能需要使用存储过程来修改这些表。
  • 您可以手动将表的 DDL 创建脚本添加到您的迁移中,并且仍然可以在主键属性上欺骗 EF。但如前所述,只有在您真的、绝对无法更改数据库以做正确的事情时才这样做。

标签: c# database entity-framework ef-code-first poco


【解决方案1】:

最后,我只是为未包含的表编写了自己的 POCO。

我在我想充当键的属性上方使用了一个属性 [KEY]。我在 DataModel 中添加了 DbSet 行,EF 确实在我的数据库中识别了它们。

我不想生成主键,因为我的老板不想要,这是一个足够好的理由。 :) 希望对你最好的回答

【讨论】:

    猜你喜欢
    • 2015-12-04
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多