14

我的 MS SQL 数据库中有 3 个表,并且在我的项目中添加了一个 EntityFramework(latest),我在其中导入了这 3 个表。第一个问题是没有构建实体,所以我将“代码生成策略”NoneDefault.

构建后我得到

X 已经包含 Y 的定义

实体的所有属性。

当仔细观察时,它在?中产生了一个部分前Users.cs和一个部分。UserMainModel.Designer.cs

为什么会生成User.cs?我在另一个项目中有类似的设置,并且 EF 设置为相同的设置,没有User.cs

Edit1:我可以看到一个不同的东西,那就是在失败的项目中使用设置为 False 的强空间类型,但是不可能将其设置为 true(灰色)?

4

2 回答 2

22

None您应该为 .edmx 文件使用代码生成策略。或者删除MainModel.ttMainModel.Context.tt模板,它们会生成模型实体和上下文。

如果你使用Default代码生成策略,那么实体和上下文将被生成到MainModel.Designer.cs文件中。那将是标准实体,继承自EntityObject,上下文将继承自ObjectContext。使用 Entity Framework 5,我们可以生成 POCO 实体。整个生成是在 T4 模板中完成的,它生成上下文、继承自DbContext和 POCO 实体,没有一些基本类型(嗯,只有对象)。

当您在 edmx 设计器中同时拥有模板并启用代码生成时,将生成两组实体。这就是为什么你有名字冲突。

于 2012-12-02T11:08:24.410 回答
3
  1. 右键单击实体模型。
  2. 转到属性并删除“自定义工具”中的默认名称。
  3. 在 model.tt 和 model.context 中分配 edmx
  4. 构建并执行它,您将不会出错。
于 2013-09-27T11:15:33.860 回答