我有一个项目,需要使用同一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);
};
答案 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