我敢肯定我之前已经做过,但是我不知道现在该怎么做!我的情况是:

// This is generated from EDMX
public partial class HOLDbEntities : DbContext
{
    public HOLDbEntities()
            : base("name=HOLDbEntities")
        {
        }
}

现在,我希望此连接字符串易于更改(我想从HOLDbEntities实现),因此我需要重写此构造函数。

我试过了:
public partial class HOLDbEntities
{
    private const string _contextName = "HOLDbEntities";
    public static string ContextName { get { return _contextName; } }

    public HOLDbEntities()
        : base(ContextName)
    {
    }
}

但这会引发错误:



我可以理解为什么会出现此错误,但是为了执行我要实现的目标,我该如何首先停止自动生成构造函数?

最佳答案

我所建议的最好是工厂方法:

private HOLDbEntities(string contextName) : base(contextName) { }

public static HOLDbEntities Create() {
    return new HOLDbEntities(ContextName);
}

并使用HOLDbEntities.Create()而不是new HOLDbEntities()

关于c# - 重写代码生成的DbContext构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15088426/

10-10 07:04