• EF6的DbContext动态连接字符串


    问 题:

    public partial class ProcessContext : DbContext
    {
        static ProcessContext()
        {
            Database.SetInitializer<ProcessContext>(null);
        }
    
        public ProcessContext()
            : base("Name=ProcessCS") //Comes from Config File
        {
        }
    
        --DBSets 
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
           --Code
        }
    }
    

    我试着用下面的code,但它不工作。该方法如下

    public ProcessContext()
        : base(nameOrConnectionString: ConnectionString())
    {
    }
    
    private static string ConnectionString()
    {
        SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
        sqlBuilder.DataSource = "XXX";
        sqlBuilder.InitialCatalog = "YYY";
        sqlBuilder.PersistSecurityInfo = true;
        sqlBuilder.IntegratedSecurity = true;
        sqlBuilder.MultipleActiveResultSets = true;
    
        EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
        entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
        entityBuilder.Metadata = "res://*/";
        entityBuilder.Provider = "System.Data.SqlClient";
    
        return entityBuilder.ToString();
    }
    

      

    解决方案:

    有关SQL Server连接,覆盖实体容器类:(开发环境:EF6中,SQL Server 2012的前preSS,VS2013)

    public partial class PxxxxEntities
    {
        private PxxxxEntities(string connectionString)
            : base(connectionString)
        {
        }

        public static PxxxxEntities ConnectToSqlServer(string host, string catalog, string user, string pass, bool winAuth)
        {
            SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder
            {
                DataSource = host,
                InitialCatalog = catalog,
                PersistSecurityInfo = true,
                IntegratedSecurity = winAuth,
                MultipleActiveResultSets = true,

                UserID = user,
                Password = pass,
            };

            // assumes a connectionString name in .config of MyDbEntities
            var entityConnectionStringBuilder = new EntityConnectionStringBuilder
            {
                Provider = "System.Data.SqlClient",
                ProviderConnectionString = sqlBuilder.ConnectionString,
                Metadata = "res://*/DbModel.csdl|res://*/DbModel.ssdl|res://*/DbModel.msl",
            };

            return new PxxxxEntities(entityConnectionStringBuilder.ConnectionString);
        }
    }

      

  • 相关阅读:
    vue 中input的输入限制
    PC端百度地理围栏、绘制工具以及判断当前坐标是否再围栏中
    js判断鼠标点击的是哪个键
    vue过滤器的使用
    3.Mybatis的配置解析
    2.MyBatis的CRUD操作
    4.JVM类加载器深入解析及重要特性剖析
    3.JVM的接口初始化规则与类加载器准备阶段和初始化阶段的重要意义分析
    2.JVM的类加载器
    1.JVM如何学习
  • 原文地址:https://www.cnblogs.com/CelonY/p/12766954.html
Copyright © 2020-2023  润新知