EF不允许我指定连接字符串。

3

它自动生成类的方式并不需要将连接字符串作为参数 - 虽然生成的代码向基类传递了连接字符串。我可以自己编辑模板,但难道没有更好的方法吗?因为我可能会重新生成模型(甚至删除和重新创建),我不希望它影响模板。

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

public partial class MyEntities : DbContext
{
    public MyEntities()
        : base("<Connection string>")
    {
    }
...

我正在使用数据库优先的方法。一切都很顺利,但现在我已经创建了一个完全相同的数据库,并且我需要能够在两个数据库之间切换。


我假设你正在使用数据库优先的方法? - Simon Rapilly
默认情况下,如果使用数据库优先方法,则连接字符串来自您的配置文件。 - Belogix
1个回答

5
您应该能够定义一个局部类,它与您生成的类(在单独的文件中)并列。这个局部类可以有第二个构造函数:
public partial class MyEntities : DbContext
{
    public MyEntities(string connectionstring)
        : base(connectionstring)
    {
    }
}

谢谢。我已经完成了这个,但是出现了“UnintentionalCodeFirstException”异常。有什么想法吗?我只需要将其注释掉吗? - NibblyPig
错误信息意味着您可以将其注释掉。这里有一些好的信息:https://dev59.com/72025IYBdhLWcg3wjGpO - qujck
已将其注释掉,并小心地在连接字符串中包含了所有实体信息,它运行得非常好。谢谢。 - NibblyPig
@qujck,这是默认和标准的做法吗?在我升级的EF4中不是这样的。 - IbrarMumtaz
据我理解,是的 - 但我不是这个话题的权威;-) - qujck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接