考虑以下场景,
我有通过 DB First 方法创建的实体,
// auto-generated class
public partial DBEntity : DBContext
{
public DBEntity ()
: base("name=DBEntity ") // gets connection string from api.config
{
}
}
有时我需要构建和传递连接字符串,所以我创建了这个,
public partial class DBEntity
{
public DBEntity (String connectionString)
{
if (string.IsNullOrEmpty(connectionString))
new DBEntity ();
else
base(connectionString); // this one fails
}
}
最好的方法是什么
- 如果连接字符串为空,调用无参数实体构造函数?
- 如果 conn 字符串不为空,则从参数化构造函数调用基本构造函数并实现下面发生的事情,
public DBEntity (String connectionString) : base (connectionString)
我会一直做一个new DBEntity(string)
最佳答案
您不能更改在构造函数中创建的对象的引用。换句话说,当您调用构造函数时,对象会在内存中初始化,而您只是在设置它。
相反,您应该使用允许您控制返回类型的静态方法。您可以将它放在另一个类中,例如 DbEntityFactory
并调用 DbEntityFactory.Create
或将它放在您的 DbEntity
类中并调用 DbEntity.Create
。
public static DBEntity Create(String connectionString)
{
if (string.IsNullOrWhiteSpace(connectionString)) //use this instead of IsNullOrEmpty
return new DBEntity();
else
return new DBEntity(connectionString);
}
关于c# - 从部分类 c# 调用 Base 实体构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31132678/