Entity framework 具有多实体框架模型的单个连接字符串(数据优先)

Entity framework 具有多实体框架模型的单个连接字符串(数据优先),entity-framework,connection-string,Entity Framework,Connection String,我有3个不同的项目,它们各自的EF实体数据模型指向同一个数据库。我不想在每个项目的app.config文件中保存连接字符串,但想在我的模型之间共享它 我在stackoverflow上看到了这个链接 但问题是,如果我更新EF模型,它将覆盖EF模型上下文中的代码,并且它将从DbContext继承,而不是从BaseContext继承 请帮助我如何解决此问题。您必须在单独的配置文件中移动连接字符串: connectionString.config <?xml version="1.0" encod

我有3个不同的项目,它们各自的EF实体数据模型指向同一个数据库。我不想在每个项目的app.config文件中保存连接字符串,但想在我的模型之间共享它

我在stackoverflow上看到了这个链接

但问题是,如果我更新EF模型,它将覆盖EF模型上下文中的代码,并且它将从DbContext继承,而不是从BaseContext继承


请帮助我如何解决此问题。

您必须在单独的配置文件中移动连接字符串:

connectionString.config

<?xml version="1.0" encoding="utf-8" ?>
<connectionStrings>
  <add name="connectionString"
       connectionString="Integrated Security=SSPI; Persist Security Info=False; Initial Catalog=DbName; Data Source=.\SQLExpress;"
       providerName="System.Data.SqlClient" />
</connectionStrings>

将会发生什么:

  • 必须首先复制ConnectionString.config

  • 所有YourApplicationName.config都将引用共享连接字符串配置文件

如果项目没有任何App.config,那么只需添加它!也可以使用ConfigurationSettings手动加载


这是在app.configs之间共享数据库配置的最佳方式,当您更改例如Sql Server名称时,您只需修改connectionString.config,而不是所有app.configs

它解析为总是从MVC项目中选取的连接字符串,所有其他类库项目都会自动引用它。

EF生成的类是部分的。只需将修改后的构造函数和“helper”代码放入另一个文件中,该文件扩展了生成的构造函数。这样,您就不必担心EF会覆盖您的自定义代码。@Xeun:谢谢您的及时响应,但现在当我尝试在.Net Framework 4.5中运行该示例时,我收到警告CS0618“Database.DefaultConnectionFactory”已过时:“默认连接工厂应在配置文件中设置或使用DbConfiguration班级。(请参阅)“那么,使用与link相同的方法还是好的,还是有更好的方法。我不太喜欢你在答案中展示的解决方案。在你的例子中,只是连接工厂过时了,让我给你看一个代码示例,我会写一个答案编辑:我想我把你的问题搞错了。使用Bassams方法可能会更好。@Xeun:没问题,谢谢您的帮助:-)谢谢您的回复,但在我的项目ConnectionString.config文件位于一个常见的DAL项目中,每个EF数据模型都有不同的项目。那么app.config文件中的文件路径是什么呢。请建议。我收到错误:附加信息:在应用程序配置文件中找不到名为“ABC_Entity”的连接字符串。对于一切正常的概念,只需将ConnectionStrings.config放置在没有任何路径的位置,然后手动将其复制到bin\Release或Debug目录。当您确定它正在工作时,将ConnectionString.config添加到您的基础架构assemly中,并在Properties窗口中选择Copy to OutPut Directory |始终复制或尝试将其放在根目录中的某个位置,并使用..\…-->我不确定这个引用是如何工作的,但你必须尝试一下。@Bassam:我遇到的问题是有原因的:但当我这样做时,即使从我的项目的app.config文件中删除了连接字符串,也会从web项目中拾取连接字符串。那么这是否解决了我的问题,或者我可能有一些问题。请提出建议。如果您正确配置了app.config或web.config,则一切都应正常工作,您不应收到此错误消息。您需要在web.config/app.config文件section=“entityFramework”。。。你有?然后在标记之后,您需要添加文件connectionStrings.config,它应该位于配置文件Relese\MyWeb.config=>所在的目录中,这里还有连接字符串。
 ...
 <connectionStrings configSource="ConnectionStrings.config"/>
 ...