gpt4 book ai didi

c# - 在一个 DbContext 中使用多个数据库

转载 作者:太空宇宙 更新时间:2023-11-03 16:01:12 27 4
gpt4 key购买 nike

我正在编写一个 SaaS 应用程序,其数据层将在 SQL Server 上运行并由一个通用数据库和一个用于订阅该服务的每个公司的组织类型数据库组成。

公共(public)数据库将包含用户列表、用户到组织的映射、管理信息等。组织类型的数据库将包含公司特定的数据(例如:发票和订单,如果是那种程序的话)。

我的目标是使用单一 DbContext,其中包含对 Common 和 Organization 模式中表的引用,并让 EF 在运行时知道是哪一个要使用的组织数据库。

开箱即用的 EF6 是否可行(无黑客)?

最佳答案

我认为这在一个上下文中是不可能的,或者至少一直在上下文之间切换是一种真正的痛苦。听起来公共(public)数据库仅用于设置并可能确定要使用哪个组织特定数据库。有两个上下文真的没什么大不了的。

我们目前在数据库之间切换,我们编辑了 Model.Context.tt 文件(它生成实际的类)以使 DbContext 构造函数从设置中获取连接字符串;

<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
{
public <#=code.Escape(container)#>()
: base(Properties.Settings.Default.MyContext)
{
<#

MyContext 只是连接字符串,类似这样;

"Metadata=res://*/MantraModel.csdl|res://*/MantraModel.ssdl|res://*/MantraModel.msl;provider=System.Data.SqlClient;" +
"provider connection string=\"Data Source={0};Initial Catalog={1};Integrated Security=True;Connection Timeout={2};Persist Security Info=False;MultipleActiveResultSets=True;App=EntityFramework\""

然后,在代码中,当您想要更改数据库时,只需将 Properties.Settings.Default.MyContext 字符串更改为正确的连接字符串,即 Common 或 Organization。 MyContext 更改后,创建上下文,它将指向正确的数据库。

关于c# - 在一个 DbContext 中使用多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21296738/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com