【发布时间】:2014-01-17 08:36:23
【问题描述】:
我在使用 EF6 为 MVC4 实施存储库模式 [UoW] 时遇到问题。
错误:“XX.DataAccess.Context”必须是具有公共无参数构造函数的非抽象类型,才能将其用作泛型类型或方法“XX.DataAccess.WriteRepository”中的参数“TContext”
//Data Access layer Class for Saving/Deleting/Retriving etc. Inherits WriteRepository
public class Common : WriteRepository<Context>, ICommon
{
//Method
}
//Repository Pattern
public abstract class WriteRepository<TContext> : IWriteRepository where TContext : DbContext, new()
{
private readonly TContext _context;
protected TContext Context { get { return _context; } }
protected WriteRepository()
{
_context = new TContext();
}
//Save Method
//Delete Method
//Retrive Method
//Find Method
}
//数据库上下文类 //这里我需要建立以客户端ID为参数的动态连接字符串。如果我在参数中使用它,它会给我上面提到的数据访问方法实现的错误。
public partial class Context : DbContext
{
static Context ()
{
Database.SetInitializer<Context>(null);
}
public Context (int ClientID = 0)
: base(ConnectionString(ClientID))
{
var objContext = (this as IObjectContextAdapter).ObjectContext;
objContext.CommandTimeout = 180;
}
//DBSet's
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Mapping
}
private static string ConnectionString(int ClientID = 0)
{
//return connection string
}
}
让我知道我需要进行哪些更改才能使其正常工作。
【问题讨论】:
标签: entity-framework asp.net-mvc-4 .net-4.5 repository-pattern dbcontext