如何在每个查询的动态基础上更改架构?

loy*_*low 5 c# asp.net-mvc entity-framework

我希望能够将模式的名称传递给我的所有数据层方法,并以某种方式让Entity Framework在每个查询的基础上更改模式.

这可能吗?

public class UserRepository : GenericRepository<....>
{


    public List<User> GetUsersByLocation(string schema, int locationId)
    {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

在每次调用的基础上,我希望能够更改EF查询的架构.

Nik*_*K S 6

如果您希望SQL DML查询为多租户共享架构数据库作为每个查询基础

你必须做以下事情

  1. 创建架构时,请创建用户并将其默认架构设置为此架构
  2. 将所有架构,用户名和密码存储在dbo表中作为master

如果您拥有以上所有数据,那么您可以使用相同的查询通过将connectionString更改为必需的db用户名和密码来从服务器获取数据


小智 1

不,不可能。就这么简单。EF 认为架构布局是静态的,就像几乎所有 ORM 一样。很抱歉得到否定的答案,但这是不可能的。您可以在编译模型时做一些事情(通过在 xml 中更改它或在属性中动态更改等),但不能在每个查询的基础上做一些事情。