X已经包含带有EntityFramework的定义Y? (简单数据库)

我的MS SQL数据库中有3个表,我已经在我导入这3个表的项目中添加了EntityFramework(最新)。 第一个问题是没有构建任何实体,因此我将“代码生成策略”从“ None ”更改为“ Default

建成后我得到了

X已经包含Y的定义

在实体的所有属性上。

仔细观察它是否在Users.cs生成了部分ex Users.cs和一个部分User in?

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

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

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

如果使用Default代码生成策略,则将在MainModel.Designer.cs文件中生成实体和上下文。 那将是标准实体,inheritance自EntityObject ,上下文将inheritanceObjectContext 。 使用Entity Framework 5,我们可以生成POCO实体。 整个生DbContext在T4模板中完成,这些模板生成上下文,inheritance自DbContext ,而POCO实体没有一些基类型(嗯,仅对象)。

如果在edmx设计器中同时生成模板和启用代码,则将生成两组实体。 这就是你有名字冲突的原因。

  1. 右键单击实体模型。
  2. 转到属性并删除“自定义工具”中的默认名称。
  3. 在model.tt和model.context中分配edmx
  4. 构建并执行它您将免于错误。