具有相同架构EF Core的多个数据库?

时间:2019-12-03 09:31:21

标签: sql-server ef-database-first ef-core-2.2

我有一个项目,需要使用同一SQL Server连接的两个不同数据库。

对于第一个数据库,我使用了所有用户通用的 DatabaseFirstApproach

第二个数据库是每个用户专用的,但是在其架构上是相同的,SQL Server中有许多数据库。

我的问题是,如何在我的项目中添加这些数据库?

它们具有相同的架构,因此它们应该具有相同的模型,我们可以为具有ef核心的不同数据库创建共享模型吗?

bitset<1> fun_1(bitset<1>a,bitset<1>b)
    {
    return (a^b);
    }
void main()
{
  bitset<4> res;
  bitset<4> input1,input2;
  res[1]=fun_1(input1[0],input2[0]);
  return;
}

我应该使用数据库优先方法将它们全部添加吗?

这将使项目结构重复(相同的模型将重复多次)!

对于我的应用程序中的每个客户端,我将使用以下代码:

                   Model
 db1 db2 db3 db4 db5 db6 db7 db8 db9 db10

更新

这是我的“ OnConfiguring”方法:

 //Connect with the selected customer's connection string
          using (SqlConnection ccn = new SqlConnection(EConnectionString.ToString()))
        {
            DateTime lastDayinTheYear = new DateTime(DateTime.Now.Year, 12, 31);
            GetListEntrepriseActivitesByPeriode(ccn,IdEnterprise, DateTime.Now, lastDayinTheYear);

        };

1 个答案:

答案 0 :(得分:2)

我在评论中写道:

每个数据库的域模型都相同(不需要为每个数据库启动数据库第一个生成器,将其用于一个数据库就足够了。您可以使用一个连接来连接每个数据库。但是在连接时,您应该将数据库名称更改为所需的名称。

如果不联接来自不同数据库的数据,则不需要其他上下文。如果需要跨数据库查询,则需要不同的dbcontext。

您应该更正dbContext类:

public class BloggingContext : DbContext
{
    public BloggingContext(DbContextOptions<BloggingContext> options)
        : base(options)
    { }

    public DbSet<Blog> Blogs { get; set; }

    //without OnConfiguring method
}

然后您可以将此dbContext用作:

var optionsBuilder = new DbContextOptionsBuilder<BloggingContext>();
optionsBuilder.UseSqlServer("You connection string");

using (var context = new BloggingContext(optionsBuilder.Options))
{
  // do stuff
}

更多详细信息,您可以找到here