实体框架数据库首先:在运行时模式下连接到特定的数据库模式

时间:2016-03-03 15:38:11

标签: c# entity-framework ef-database-first

我们建议(由Microsoft专家)在单个数据库中使用数据库模式,而不是为我们服务的每个客户使用单独的数据库。 我们目前正在使用数据库第一种方法。

用户故事:当我作为公司1中的人登录时,在页面"仓库中我从表u1.Warehouses获取信息。公司2 - u2.Warehouses等。

问题:通过拥有特定用户的模式名称,我们如何使用Entity Framework在运行时模式下建立与that_schema_name.Table_name的连接? 谢谢!

1 个答案:

答案 0 :(得分:0)

根据记录的用户及其对角色,公司或您在应用程序中定义的任何内容的成员身份,您可以有条件地设置架构。 Bellow我从 CurrentPrincipal 为样本提供了 If 控制流构造和 IsInRole 方法,显然它可能不是你的最终解决方案,但应该让你进入追踪:

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");   

    ...
}