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

本文关键字:Sql Azure 映射 数据库 身份验证 模型 连接 字符串 创建 方式 编程 | 更新日期: 2023-09-27 18:32:04

我正在使用 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(federation id)。

private Entities _db = new Entities();

在创建实例到 dbcontext 时,我想基于 Shardid 建立新连接。

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

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

花了太多时间,我想通了。它对我来说效果很好。

 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 ;

必须将实体数据库连接转换为SqlConnection,以正常方式执行联合命令。

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