gpt4 book ai didi

c# - 为动态连接字符串设置 Entity Framework

转载 作者:IT王子 更新时间:2023-10-29 04:26:00 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它将在多个数据库中使用相同的数据库模式。为此,我创建了一个名为 MyTemplate 的数据库。创建新用户时,他们将拥有自己的数据库实例。因此,将创建一个名为 MyTemplate_[UserName] 的数据库。当用户登录时,我需要将他们的查询指向他们的数据库。出于这个原因,我知道我需要在运行时设置连接字符串。我的问题是,我还想使用 Entity Framework 。

目前,我使用 MyTemplate 作为源创建了一个新的 .edmx。我以为我可以更新代码并在那里设置连接字符串。不幸的是,我不知道如何设置它。 TemplateEntities 的构造函数没有允许我传入连接字符串的重载。我注意到 TemplateEntities 派生自 DbContext,我认为这不是问题所在。

string connectionString = GetUsersConnectionString();
using (TemplateEntities entities = new TemplateEntities())
{
TemplateEntity entity = new TemplateEntity();

// Save to the database
entities.TemplateEntity.Add(entity);
entities.SaveChanges();
}

我是否错误地创建了 .edmx?还是我完全错过了什么?我用 Google 搜索的所有内容都显示了一个重载,它应该允许传入一个连接字符串。但是,我没有可用的重载。

最佳答案

生成的 TemplateEntities 类被标记为 partial

您所要做的就是添加另一个文件,其中包含公开您要使用的构造函数的分部类定义的另一部分:

partial class TemplateEntities
{
public TemplateEntities( string nameOrConnectionString )
: base( nameOrConnectionString )
{
}
}

然后将您的连接字符串传递给此构造函数。

您想将这段代码放在不同的文件中,这样当您更新您的 edmx 模型时它就不会被覆盖。

关于c# - 为动态连接字符串设置 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14440698/

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