zoukankan      html  css  js  c++  java
  • 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);
        }
    }

      

  • 相关阅读:
    (Java实现) 洛谷 P1106 删数问题
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    (Java实现) 洛谷 P1051 谁拿了最多奖学金
    (Java实现) 洛谷 P1051 谁拿了最多奖学金
    (Java实现) 洛谷 P1106 删数问题
    目测ZIP的压缩率
  • 原文地址:https://www.cnblogs.com/CelonY/p/12766954.html
Copyright © 2011-2022 走看看