我敢肯定我之前已经做过,但是我不知道现在该怎么做!我的情况是:
// 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/