2016-03-03 53 views
0

我们推荐(由Microsoft专家)在单个数据库中使用数据库模式,而不是为我们服务的每个客户使用单独的数据库。 我们目前正在使用数据库第一种方法。 。实体框架数据库首先:在运行时模式下连接到特定的数据库模式

用户的故事:当我登入从公司1家伙,页上的“仓库我从表u1.Warehouses信息公司2 - u2.Warehouses等

问题:具有模式名称为特定用户,我们如何才能建立连接到运行模式下使用实体框架连接到that_schema_name.Table_name? 谢谢!

回答

0

取决于记录的用户和他的成员角色,公司,或任何你在你的定义应用程序,您可以有条件地设置架构。波纹管我提供了样本如果控制流程施工和IsInRole方法从CurrentPrincipal,显然这可能不是你的最终解决方案,但应该把你在赛道:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 

    base.OnModelCreating(modelBuilder); 
    if (Thread.CurrentPrincipal.IsInRole("Foo")) 
     modelBuilder.HasDefaultSchema("that_schema_name"); 
    else 
     modelBuilder.HasDefaultSchema("other_schema_name"); 

    ... 
} 
+0

谢谢!我们已经尝试过了。但是OnModelCreating方法似乎只用于CodeFirst方法,我们已经得到了DatabaseFirst。 –

+0

这是不正确的。您也可以使用OnModelCreating与DatabaseFirst。 –

+0

我们再次尝试过您的解决方案。不幸的是,事件处理程序没有被调用:( –

相关问题