加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

entity-framework – 具有多个实体框架模型的单个连接字符串?

发布时间:2020-12-14 16:35:14 所属栏目:资源 来源:网络整理
导读:在工作中,我们目前有一个非常大的Web应用程序,它连接到一个大型数据库.我们已经使用Entity Framework一段时间了,为了简单起见,我们将数据库划分为许多实体模型.这对我们很有用,但我们遇到了一个问题.由于连接字符串的元数据部分,每个EF模型都需要自己的连接
在工作中,我们目前有一个非常大的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");
            }
        }
    }
}

我仍然需要清理代码,但我认为这可以让你对如何实现它有一个很好的了解.如果有不同的更好的方法,我仍然会非常感兴趣.

谢谢!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读