我目前正在开发一个包含ASP.NET项目和WPF应用程序的解决方案。我有一个共同的项目,使用ADO.NET实体模型,其中实体是从数据库生成的。
如果我试图从我的WPF,ASP或测试项目中调用我的数据库(MySQL)中的任何内容,我会得到一个InvalidOperationException,其中它表示没有名为" DataModel"的连接字符串。可以在应用程序配置文件中找到。
然后我必须向每个项目添加实体框架连接字符串和其他内容,以便能够从我的公共项目或数据库中获取数据。这也意味着如果我想要更改数据库连接,我必须在每个项目中执行此操作。难道没有更聪明的方法吗?
谢谢..
答案 0 :(得分:1)
Isn't there a smarter way to do this
通过在每个项目中添加连接字符串,您可以做大多数人所做的事情,至少在中小型环境中这样做。
大多数项目需要针对不同环境(DEV,QA,PRODUCTION)的不同连接字符串。我使用并强烈推荐免费加载项Slow Cheetah。该工具允许您定义XSLT转换以修改项目中的XML文件。在这种情况下,我使用它来根据构建设置放入正确的连接字符串。
准备好为PRODUCTION环境创建构建时,只需将Visual Studio解决方案配置更改为Release,生成的web.config / app.config包含PRODUCTION连接字符串。
答案 1 :(得分:0)
您可以将必须使用的connectionstring传递给DbContext的构造函数。您有3个选项来传递连接字符串:
传递要使用的连接字符串的名称,如果在配置文件中找不到,EF将使用默认的连接字符串。
public partial class MyDb : DbContext
{
public MyDb(string connectionStringName) : base(connectionStringName)
}
将一个连接字符串传递给构造函数。 EF不会查看任何配置文件,只使用那个,这可能是你正在寻找的:
public partial class MyDb : DbContext
{
public MyDb(string connectionString) : base(connectionString)
//Or hardcode it in:
public MyDb() : base("datasource=...")
}
编辑:执行上述操作确实不是一个好习惯,我只是说这是可能的。