gpt4 book ai didi

entity-framework - 具有多个 Entity Framework 模型的单个连接字符串?

转载 作者:行者123 更新时间:2023-12-04 04:08:27 24 4
gpt4 key购买 nike

目前,在工作中,我们有一个非常大的Web应用程序,该应用程序连接到海量数据库。我们已经使用 Entity Framework 已有一段时间了,为了简化工作,我们将数据库分为许多实体模型。这对我们来说很好,但是我们遇到了一个问题。由于连接字符串的元数据部分,每个EF模型都需要自己的连接字符串。管理这么多的连接字符串是一件很痛苦的事情。

现在,我有一个可以解决的解决方案。我将创建一个类,该类将把元数据信息另存为一个属性,并将其连接到web.config中的标准连接字符串。因此,当我们使用连接字符串“Database.EntityConnectionString”时,它将为我提供实体连接字符串,但是我们只需要在web.config中管理单个连接字符串即可。我们仍然必须使用元数据来管理类,但是模型变化不大,并且我们不经常创建它们,因此维护应该很好。我的问题是,有没有更好的方法来处理此问题,或者您将如何处理?

谢谢!

最佳答案

这是我实现此问题的解决方案的方式:

namespace DBLibrary
{
public enum Models
{
Model1,
Model2
}

public static class Database
{
public static string EntitiesConnectionString(Models model)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["Default"].ConnectionString);

builder["MultipleActiveResultSets"] = true;
builder["Connect Timeout"] = 30;

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = builder.ConnectionString;

switch (model)
{
case Models.Model1:
entityBuilder.Metadata = "res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";
return entityBuilder.ToString();
case Models.Model2:
entityBuilder.Metadata = "res://*/Model2.csdl|res://*/Model2.ssdl|res://*/Model2.msl";
return entityBuilder.ToString();
default:
throw new Exception("Invalid model, no connection string defined");
}
}
}
}

我仍然需要清理代码以及所有代码,但是我认为这可以使您更好地实现代码。如果有其他更好的方法,我仍然会很感兴趣。

谢谢!

关于entity-framework - 具有多个 Entity Framework 模型的单个连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118313/

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