在实体框架中更改命名空间

Posted

技术标签:

【中文标题】在实体框架中更改命名空间【英文标题】:Changing Namespaces in Entity Framework 【发布时间】:2015-01-07 12:00:43 【问题描述】:

我正在尝试更改类的实体框架生成器使用的命名空间。

当我单击我的实体的设计器 Model.edmx 时,我可以看到可以更改命名空间的地方:

命名空间

在 ConceptualEntityModel 属性下。更改了该名称空间,但什么也没发生。没用。所以,我从这个链接中阅读了一些帮助:

http://weblogs.asp.net/zeeshanhirani/struggling-through-namespace-in-entity-framework

说我要改属性:自定义工具命名空间

很好,当我在控制台应用程序中单击 .edmx 的属性时,那里有属性。但是当我在 Web 应用程序 中使用相同的东西时,该属性不存在。只有一个名为 Web File Properties 的属性文件只有 3 个属性:

自定义工具 文件名 完整路径

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

rainerh 是对的:

我尝试设置 *.edmx 自定义工具命名空间 属性 - 这没有帮助。 我试图设置 *.Context.tt 属性 - 这也没有帮助。 但是当我设置 *.tt 文件的 Custom Tool Namespace 属性时(右键单击文件 -> 属性) - 为之前生成的所有类自动设置了命名空间。

【讨论】:

唯一没有改变的是 *.Context.cs 文件引用...要更改它,您需要在项目属性上设置默认命名空间。 为了使其正常工作,我必须在 *.Context.tt 和 *.tt 文件上设置自定义工具命名空间属性。 提示:解决方案资源管理器中的“显示所有文件”选项应启用以扩展 edmx 模型【参考方案2】:

首先打开您的 edmx 文件,然后按 F4 或单击属性窗口。 在 Schema 部分下,有一个名为 Namespace 的属性,您可以对其进行修改。

【讨论】:

好的,试试这个...在您的解决方案资源管理器中,展开您的 edmx 以查看 .Context.tt。右键单击 Context.tt 文件并选择属性。自定义工具命名空间属性在其中。尝试更新它,看看会发生什么 在我的情况下,它不是 .Context.tt 而只是 .tt 我在 6.1.3 版中使用实体框架 谢谢。我想更改 model namespace 即生成的 DbContext 类的名称,这正是我所需要的。 哇!这有效!这应该是公认的答案!【参考方案3】:

在我的例子中,我只是简单地在项目中创建了一个文件夹,将 .edmx 文件移动到我创建的文件夹中(使用解决方案资源管理器),所有内容都自动更改了命名空间。

【讨论】:

这是迄今为止最好的解决方案,在文件夹中创建 edmx,它会自动将该文件夹作为命名空间的一部分 这对我有用,是最简单的解决方案。英孚 6.4.0【参考方案4】:

我的问题是我必须重命名解决方案,而默认命名空间和程序集名称没有更改为新名称。确保您的命名空间在 EDMX 设计器中正确后,右键单击您的项目以打开属性并更新默认命名空间和程序集名称,我们很好。

【讨论】:

以上是关于在实体框架中更改命名空间的主要内容,如果未能解决你的问题,请参考以下文章

我应该在另一个命名空间中使用实体框架 DBContext 的部分类吗

重命名元素的 XSLT 问题——更改命名空间

在 XSL 翻译中更改 XML 文件的命名空间

App Engine 多个命名空间

是否可以删除命名空间中的所有Google Cloud Datastore Kinds?

WCF 服务 DataServiceConfiguration 命名空间冲突