【问题标题】:EF Code First From DB not creating Entities for all tablesEF Code First From DB 不为所有表创建实体
【发布时间】:2016-01-04 20:40:01
【问题描述】:

我有一个现有的数据库,我正在尝试使用 Entity Framework Code First From Database 为其生成 C# 实体。为此,我在 Visual Studio 2015 中执行 Add -> New Item -> ADO.NET Entity Data Model -> Code First from database。当我查看 Entity Data Model Wizard 时,我看到每个表都被选中,但是当导入完成某些未创建表的实体时。我已经尝试了两次,并仔细检查了确实选择了没有实体的表进行导入。导入过程中没有抛出任何错误,所以我不确定为什么某些表缺少授权。可能出了什么问题?如何为每个选定的表获取实体?

为缺少的表之一创建表代码:

CREATE TABLE [dbo].[ProgramControl] (
    [CodeName]    VARCHAR (80) NULL,
    [CodeValue1]  VARCHAR (50) NULL,
    [CodeValue2]  VARCHAR (50) NULL,
    [CodeValue3]  VARCHAR (50) NULL,
    [CodeValue4]  VARCHAR (50) NULL,
    [Description] TEXT         NULL
);

【问题讨论】:

  • 没有重新创建什么样的表?链接表(用于表示多对多关系的两列外键)?向我们展示那些未通过该工具的表的表定义。我怀疑它们根本不是必需的,可以通过 FK 关系另一端的实体中的集合来表示。
  • @spender 为您添加了一些代码。它们不是链接表,它们是必需的,因为我需要从中查询数据。

标签: c# ef-code-first entity-framework-6


【解决方案1】:

EF 代码优先要求在每个实体上使用主键,因此该工具无法映射这些表。

看起来像你might be able to work around this with some trickery,但几乎可以肯定,为每个表添加一个 PK 是最好的方法。

【讨论】:

  • 那么我有哪些选择?我无法修改数据库以将 PK 添加到表中。除了 EF,我从来没有使用过任何东西来连接和查询 ASP.Net 中的数据库
【解决方案2】:

如果 Table 没有至少一个参数 not null ADO.NET 将不会生成该类。不知道是不是BUG,就发生在我身上。 主键不是必须的,但不是空的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多