Entity Framework 5 命名空间

7
我希望将Entity Framework 5 database first添加到一个类库中,该类库在Visual Studio 2012中针对.net framework 4.5进行开发。但我对需要输入的标签感到困惑:
  • 在向项目添加ADO.NET实体数据模型时,需要输入EDMX文件名。 我输入‘MyEF.edmx’。
  • 将连接字符串保存到config文件中时,我输入了‘MyEntities’。
  • 选择包含在我的模型中的一些表之后,有一个文本框可用于输入模型命名空间。我输入了‘MyModel’。
  • MyEF.edmx文件的属性“自定义工具命名空间”。我输入了‘TheEF’。
  • MyEF.Context.tt文件的属性“自定义工具命名空间”。我输入了‘TheContext’。
  • MyEF.tt文件的属性“自定义工具命名空间”。我输入了‘TheModel’。

使用ADO.NET实体数据模型设计器打开MyEF.edmx文件,并查看MyModel的属性,有:

  • 实体容器名称填充为‘MyEntities’。因此,连接字符串名称在此处输入。
  • 命名空间填充为‘MyModel’。这来自于表选择文本框。

似乎没有任何方法可以将内容放入edmx自定义工具命名空间。我得出这个结论是因为当我在整个源代码文件夹中搜索时,我只在一个vbproj文件中找到了它。

将‘TheModel’放入MyEF.tt自定义工具命名空间会导致来自MyEF.Context.vb的错误,该错误称类型‘MyTable’(这是我的数据库表的名称)未定义。

有人能解释每个标签的目的吗?

如果我想将此edmx生成的所有类(DbContext,模型等)放入一个命名空间‘MyEF’中,我应该在这些地方输入什么?

1个回答

19
各种属性的用途如下:
  • EDMX文件名称 --> 用于EDMX文件名称
  • 连接字符串名称 --> 用于配置文件中连接字符串名称,也用于EDMX概念模型(CSDL)部分的容器名称
  • 模型命名空间 --> 用于概念模型(CSDL)部分的命名空间,也用于存储模型(SSDL)部分并附加 .Store
  • EDMX文件的自定义工具命名空间 --> 当使用T4生成POCO实体时,我不认为这有任何作用。当使用EF1风格的内置代码生成时,设置此属性将为所有生成的文件设置.NET命名空间。
  • .Context.tt文件的自定义工具命名空间 --> 用于上下文源文件中使用的.NET命名空间
  • .tt文件的自定义工具命名空间 --> 用于实体的源文件中使用的.NET命名空间

请注意,如果您将.Context.tt和.tt自定义命名空间设置为不同的内容,则上下文将在与实体类型不同的命名空间中生成,这将不能直接编译。如果要在此处使用不同的命名空间,则可以更新.tt文件,但更常见的是两者使用相同的命名空间。

还请注意,您可能需要从上下文菜单中选择“运行自定义工具”来重新生成代码。


非常有用的答案。非常感谢! - Fanda
非常好的答案。我对如何/在哪里访问.Context.tt和.tt文件的自定义工具命名空间感到困惑。以防其他人也遇到这种情况,右键单击每个文件并转到“属性”。在属性窗口中,您将看到一个“自定义工具命名空间”字段。一旦更改此设置,您可能需要再次右键单击并单击“运行自定义工具”。 - Parth Shah
1
在VS 2013(以及可能的早期版本)中,更改自定义工具命名空间属性会立即重新运行该工具,无需在更改属性后手动运行它。 - mendel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接