【问题标题】:connection string to use both Model first, DB first for same database,连接字符串首先使用模型,数据库首先用于同一数据库,
【发布时间】:2015-05-28 14:33:52
【问题描述】:

在 Asp.net Entity 框架中,我们首先使用模型,同一个数据库首先使用 DB, Model first 和 DB first 有两个连接字符串。 那么我们如何为 Model first,DB first 创建单个连接字符串。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    你可以使用EntityConnectionStringBuilder:

    string sqlConnectionString = "Data Source=localhost;
         Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;multipleactiveresultsets=true"
    
    string providerName = "System.Data.SqlClient";    
    
    EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
    entityBuilder.Provider = providerName;
    entityBuilder.ProviderConnectionString = sqlConnectionString;
    entityBuilder.Metadata = @"res://*/AdventureWorksModel.csdl|
                            res://*/AdventureWorksModel.ssdl|
                            res://*/AdventureWorksModel.msl";
    
    string entityConnectionString = entityBuilder.ToString();
    

    或者,如果你足够勇敢,你可以尝试重新格式化 entityConnectionString:

    string sqlConnectionString = "Data Source=localhost;
         Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;
         multipleactiveresultsets=true"
    
    string entityConnectionString = 
      string.Format("metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl; provider=System.Data.SqlClient;provider connection string='{0}'" providerName=\"System.Data.EntityClient\"",
        sqlConnectionString
     );
    

    编辑:

    或者,您可以采取相反的方法,让我们保留 EntityConnectionString 并从中提取 SqlConnectionString:

    string entityConnectionString = 'xxxxxxx';
    EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(entityConnectionString);
    
    string sqlConnectionString = entityBuilder.ProviderConnectionString;
    

    【讨论】:

      【解决方案2】:

      连接字符串会有所不同:第一个数据库将在开头具有元数据 [嵌入] 位置。您可以将“普通”代码优先连接字符串放在 web.config 中,并在 DB First DbContext 构造函数中添加“元数据部分”,使用静态方法构建所需的 EntityConnectionString。

      例子:

      public MyContext() : base(BuildConnectionString())
      {
      }
      
      private static string BuildConnectionString()
      {
        varsqlBuilder = new SqlConnectionStringBuilder();
        //dinamically prepare the provider connection string here, using the CF one in the web.config 
        //[..]
      
        //now build the entity connection string, using the one just built as ProviderConnectionString
        var entityBuilder = new EntityConnectionStringBuilder();
        entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
        entityBuilder.Metadata = "res://*/";
        entityBuilder.Provider = "System.Data.SqlClient";
      
        return entityBuilder.ToString();
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 1970-01-01
        • 2012-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多