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);
        }
    }

      

  • 相关阅读:
    tail,more查看日志(定点和翻页)
    Python:浅拷贝和深拷贝
    mybatis sql查子list
    mybatis在insert中获取到id
    mvn安装jar到本地仓库
    微信支付wxpay -- 移动端app第二章节 -- java 后端代码
    微信支付wxpay -- 移动端app第一章节 -- 注意点
    java字符串大小写转化
    Zxing图片右下角生成二维码
    switchTap、navigateTo、switchTap
  • 原文地址:https://www.cnblogs.com/CelonY/p/12766954.html
Copyright © 2011-2022 走看看