繁体   English   中英

以编程方式创建连接字符串以将Entity Framework Code-First模型与现有Sql Azure联合数据库进行映射

[英]Programmatically creating a connection string for mapping an Entity Framework Code-First model with an existing Sql Azure federation database

我正在使用Asp.Net Web API,实体框架和SQL Azure。 在我的解决方案解决方案中,我有从数据库生成的.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; }
}

这是多租户应用程序,基于用户登录,我需要使用特定的数据库连接到数据库

shardId(联盟ID)。

private Entities _db = new Entities();

在创建到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,以常规方式执行联合命令。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM