【发布时间】:2019-06-16 07:47:04
【问题描述】:
我通过构造函数中的参数将连接字符串传递给我的实体类,如下所示:
public class Site : ISite
{
private readonly string _connectionString;
public Site(string connectionString)
{
_connectionString = connectionString;
}
当我这样查询数据库时抛出异常:
var site = db.Sites.FirstOrDefault(s => s.Name.Equals(name));
例外:
InvalidOperationException: The class 'AuctionSite.Site' has no parameterless constructor.
根据我在this 线程上找到的帖子,文档指出:
必须有无参构造函数
如果我创建无参数构造函数,则不会设置连接字符串,并且当我在方法内创建上下文时,例如:
public IEnumerable<IUser> GetUsers()
{
using (var db = new SiteContext(_connectionString))
{
return db.Users;
}
}
_connectionString 将是 null,并且在调用 DbContext 的基本构造函数时会失败。
如果不通过构造函数,我应该如何将连接字符串传递给我的实体类?
有没有更好的方法来做到这一点? 也许通过使用我的连接字符串作为参数或使用更好的查询来实现实体?
【问题讨论】:
-
类“AuctionSite.Site”没有无参数构造函数。这和
SiteContext的构造函数有什么关系?
标签: c# entity-framework ef-code-first connection-string dbcontext