簡體   English   中英

同一DBContext的多個實例

[英]Multiple instances of same DBContext

早上好,

我一直在自己的一個項目中工作,我想知道是否有人知道我的應用程序中是否可以有同一DBContext的多個實例。

我將有2個這樣的數據庫實例在Startup.cs中連接:

services.AddDbContext<MyApplicationDBContext>(options => options.UseSqlServer(_config.GetConnectionString("StringConnection1")));
services.AddDbContext<MyApplicationDBContext>(options => options.UseSqlServer(_config.GetConnectionString("StringConnection2")));

services.AddScoped<IAppRepository, AppRepository>();

這就是我構建MyApplicationDbContext的方式

public partial class MyApplicationDBContext : IdentityDbContext<AppUsers>
{
    public virtual DbSet<Book> Books{ get; set; }
    public virtual DbSet<Film> Films{ get; set; }

    public MyApplicationDBContext(DbContextOptions<MyApplicationDBContext> options) : base(options)
    {

    }
}

最后,我想在我的存儲庫中添加以下內容:

public class AppRepository: IAppRepository
{
    private IConfigurationRoot _config;
    private MyApplicationDBContext _cntx;
    private MyApplicationDBContext _cntx2;
    private UserManager<AppUsers> _userManager;

    public AppRepository(MyApplicationDbContext cntx, MyApplicationDbContext cntx2, IConfigurationRoot config, UserManager<AppUsers> userManager)
    {
        _cntx = cntx;
        _cntx2 = cntx2;
        _config = config;
        _userManager = userManager;
    }

    public async Task<IEnumerable<Book>> GetBookByDatabase(string book, int database)
    {
        if(database == 1)
           return _cntx.GetBook(book);
        if(database == 2)
           return _cntx2.GetBook(book);
        else
           return null;
    }
}

該代碼的主要目的是擁有一個應用程序實例,該實例可以插入和查詢來自2個不同數據庫的數據。

這是我寫過的第一篇文章,如果我寫錯了東西,對不起。

感謝您的回答。

好吧,如果您的目標是擁有兩個數據庫,那么您要做的就是在兩個連接字符串中指定不同的數據庫名稱。

但是,如果要按用戶分開數據,那么我想說,將用戶名存儲在表的關鍵字段中要好得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM