【发布时间】:2017-06-05 15:13:31
【问题描述】:
我正在尝试根据具有 autofac 的实体指定要使用的 dbcontext。以下是我的代码:
全球.asax
foreach (var database in DatabaseManager.Databases)
{
builder.Register<IDbContext>(c => new CodesObjectContext(database.ConnectionString, database.Alias)) //database.Alias is database name
.As<IDbContext>()
.Named<IDbContext>(database.Alias)
.InstancePerLifetimeScope();
}
builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope();
我是否可以指定将哪个 dbcontext 传递给 EfRepository?
public partial class EfRepository<T> : IRepository<T> where T : BaseEntity
{
private readonly IDbContext _context;
private IDbSet<T> _entities;
public EfRepository(IDbContext context)
{
this._context = context;
}
}
在我的实体中,我会有这样的东西
[DatabaseName("Database1")]
public partial class SampleEntity : BaseEntity
{
}
更新 这是我的 objectcontext 类
public class CodesObjectContext : DbContext, IDbContext
{
public virtual string DatabaseName { get; private set; }
public CodesObjectContext(string nameOrConnectionString, string databaseName)
: base(nameOrConnectionString)
{
DatabaseName = databaseName;
}
}
那么有没有办法匹配实体数据库属性和上下文数据库名称,然后只将这个上下文传递给存储库构造函数
【问题讨论】:
-
HI Mantas,我的问题与 JSON 无关
-
也许 this 是你要找的?
-
嗨,Munzer,不。我想使用自定义属性来指定用于存储库中上下文的数据库
标签: c# entity-framework autofac