7

我想首先将 Entity Framework 5 数据库添加到面向 .net framework 4.5 的 Visual Studio 2012 中的类库中。我对需要输入的所有标签感到困惑:

  • 将 ADO.NET 实体数据模型添加到项目时的 EDMX 文件名。我放了“MyEF.edmx”。
  • 将连接字符串保存到配置文件时。我放了“我的实体”。
  • 在选择了一些要包含在我的模型中的表后,有一个文本框可以输入模型命名空间。我放了“MyModel”。
  • MyEF.edmx 文件的属性“自定义工具命名空间”。我把'TheEF'。
  • MyEF.Context.tt 文件的属性“自定义工具命名空间”。我把'TheContext'。
  • MyEF.tt 文件的属性“自定义工具命名空间”。我放了'TheModel'。

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

  • 实体容器名称,填充“MyEntities”。所以连接字符串名称就在这里。
  • 命名空间,用“MyModel”填充。这来自表格选择文本框。

将某些东西放入 edmx 自定义工具命名空间似乎没有任何作用。我得到这个结论是因为当我 grep 整个源代码文件夹时,我只在一个 vbproj 文件中找到它。

将“TheModel”放入 MyEF.tt 自定义工具命名空间会从 MyEF.Context.vb 中产生错误,指出类型“MyTable”(这是我的数据库表的名称)未定义。

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

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

4

1 回答 1

19

各种属性的使用如下:

  • EDMX 文件名 --> 用于 EDMX 文件名
  • 连接字符串名称 --> 用于配置文件中的连接字符串名称,也用于 EDMX 的概念模型 (CSDL) 部分的容器名称
  • 模型命名空间 --> 用于 EDMX 的概念模型 (CSDL) 部分的命名空间,也用于附加了 .Store 的存储模型 (SSDL) 部分
  • EDMX 文件的自定义工具命名空间 --> 我不相信这在使用 T4 生成的 POCO 实体时用于任何事情。使用 EF1 样式的内置代码生成时,设置此属性将为所有生成的文件设置 .NET 命名空间。
  • .Context.tt 文件的自定义工具命名空间 --> 上下文源文件中使用的 .NET 命名空间
  • .tt 文件的自定义工具命名空间 --> 实体源文件中使用的 .NET 命名空间

请注意,如果您将 .Context.tt 和 .tt 自定义命名空间设置为不同的东西,那么上下文将在与实体类型不同的命名空间中生成,并且不会开箱即用地编译。如果您想在此处使用不同的命名空间,您可以更新 .tt 文件,但更多情况下人们只是为两者使用相同的命名空间。

另请注意,您可能需要在更改属性后从上下文菜单中为每个 .tt 文件选择“运行自定义工具”,以便重新生成代码。

于 2013-02-04T22:19:04.530 回答