多租户的DbContext我对.NET核心应用程序,并要设置的IoC/DI为的DbContext与.net核心身份:的IoC DI用于.NET核心身份
public class DataContext : IdentityDbContext<User, IdentityRole<int>, int, IdentityUserClaim<int>, IdentityUserRole<int>, IdentityUserLogin<int>, IdentityRoleClaim<int>, IdentityUserToken<int>>, IDataContext
{
private readonly string _dbName;
public DataContext(string dbName)
{
this._dbName = dbName;
}
public virtual DbSet<Container> Containers { get; set; }
public virtual DbSet<Note> Notes { get; set; }
public virtual DbSet<Post> Posts { get; set; }
public virtual DbSet<Email> Emails { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(ConnectionStrings.DataContext.Replace(":dbname", this._dbName));
base.OnConfiguring(optionsBuilder);
}
}
接口:
public interface IDataContext
{
DbSet<Container> Containers { get; set; }
DbSet<Note> Notes { get; set; }
DbSet<Post> Posts { get; set; }
DbSet<Email> Emails { get; set; }
}
在Startup.cs
我都有以下行:
services.AddDbContext<DataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DataContext")));
但是,连接字符串不包含数据库名。
我应该在接口这样的表中包括:AspNetUsers,AspNetRoles,...?
而且我想在Startup.cs
类似的东西写:
services.AddScoped<IDataContext, DataContext>();
而且使用的界面,而不是到处全班。
我可以这样做吗?我该怎么做?
他必须使用UoW Pattern注册,就像你说的那样。 – Valkyrie
当我将该行插入'Startup.cs'时,我有500个错误,如果你给我写一个存储库模式和示例的链接,我将不胜感激。 –
@ A.Gladkiy我编辑了我的文章。你需要两条线。我会考虑将DbContext注册为范围。 – NtFreX