C# 以编程方式创建连接字符串,用于将实体框架代码优先模型与现有Sql Azure联合数据库映射

C# 以编程方式创建连接字符串,用于将实体框架代码优先模型与现有Sql Azure联合数据库映射,c#,entity-framework,azure-sql-database,C#,Entity Framework,Azure Sql Database,我正在使用Asp.NETWebAPI、实体框架和SQLAzure。在我的解决方案中,我有从数据库生成的.edmx文件。下面的代码行是上下文实体 public partial class Entities : DbContext { public Entities(): base("name=Entities") { } protected override void OnModelCreating(Db

我正在使用Asp.NETWebAPI、实体框架和SQLAzure。在我的解决方案中,我有从数据库生成的.edmx文件。下面的代码行是上下文实体

public partial class Entities : DbContext     
{         
    public Entities(): base("name=Entities")
    {         }             
    protected override void OnModelCreating(DbModelBuilder modelBuilder)         
    {             throw new UnintentionalCodeFirstException();         }            
    public DbSet<Activity> Activities { get; set; }
}
在创建dbcontext的实例时,我想基于Shardid建立新的连接


我做得对吗?如何动态建立新连接?

花了太多时间后,我想起来了。这对我来说很好

 var   customerEntity = new CrmEDMContainer(ConnectionStringCustomerDB());
                    var connection = new SqlConnection();
                    connection =(SqlConnection) customerEntity.Database.Connection;
                    connection.Open();
                    var command = new SqlCommand();                
                    string federationCmdText = @"USE FEDERATION Customer_Federation(ShardId =" + shardId + ") WITH RESET, FILTERING=ON";
                    command.Connection = connection;
                    command.CommandText = federationCmdText;
                    command.ExecuteNonQuery();
return customerEntity ;
必须将EntityDatabase连接转换为SqlConnection,以正常方式执行federation命令

CustomerEntity将对指定的shardId执行查询,并连接到正确的数据库

 var   customerEntity = new CrmEDMContainer(ConnectionStringCustomerDB());
                    var connection = new SqlConnection();
                    connection =(SqlConnection) customerEntity.Database.Connection;
                    connection.Open();
                    var command = new SqlCommand();                
                    string federationCmdText = @"USE FEDERATION Customer_Federation(ShardId =" + shardId + ") WITH RESET, FILTERING=ON";
                    command.Connection = connection;
                    command.CommandText = federationCmdText;
                    command.ExecuteNonQuery();
return customerEntity ;