我有一个数据库(sql 2008 mdf文件),一个带有edmx文件的类库项目,使用向导创建。因此连接字符串也是由向导完成的。 该项目位于团队基础服务器上。
我可以在编码时使用所有向导制作的对象。
但是当我运行该程序并尝试创建entityContainerName时,程序崩溃并发出此错误:
指定的命名连接是 要么在配置中找不到, 不打算用于 EntityClient提供程序,或无效。
在这一行: public TestEntities():base(“name = TestEntities”,“TestEntities”)
如何解决这个问题或我做错了什么?
答案 0 :(得分:5)
您需要将类库的配置文件中的连接字符串复制到实际运行的应用程序的配置文件中。
答案 1 :(得分:1)
首先:删除您的模型,第二步:删除app.config中的所有连接字符串。
然后重新创建模型。这应该将所有内容恢复为默认值。
答案 2 :(得分:0)
好的,如果你想在类库中使用EntityFramework,这意味着你的应用程序不应该知道数据库配置。这是我的观点。我是如何解决这个问题的。 我们从所有App.Config文件中删除所有连接字符串。 我们使用已经创建的连接来实例化我们的上下文。
public class ExpertDataBase : DbContext
{
public DbSet<Operator> Operators { get; set; }
public ExpertDataBase()
: base(ConnectionFactory.GetCESqlConnection(),true)
{
}
}
public static class ConnectionFactory
{
public static DbConnection GetCESqlConnection()
{
DbConnection connection = new SqlCeConnection()
{
ConnectionString = @"Data Source= ",
};
return connection;
}
}
这是我的实现,没有我在任何xml中输入任何连接字符串。这个connectionFactory可以重构,所以我可以以某种方式注入并使用UnityContainer来解析连接类型。 希望这有帮助