我正在为各种公司使用多租户应用程序。我还没有成功。但是我的情况是我有一个带有不同公司(租户)的表集的单个 sql server 数据库。
所以我想要做的是为表添加一个约定,该约定将根据多租户应用程序概念在表中使用其模式前缀访问表。我没有使用每个租户的数据库,而是使用每个租户的架构。数据库文件是单个文件。
我想做的是我的桌子是这样的Sachin Sales & Service Pvt Ltd$Web User Setup Header
。所以我希望在生成表查询时,他们应该Sachin Sales & Service Pvt Ltd
在查询之前动态添加前缀。前缀可能会根据要求更改。它不是静态的。所以我想到了覆盖默认情况下看起来像这样的 IClassConvention
public class TableNameConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
instance.Table( instance.EntityType.Name);
}
}
无论如何我可以传递像这样的另一个参数string schemaname
来生成带有模式前缀的所需表名吗?我的想法是做这样的事情:
public class TableNameConvention : IClassConvention
{
public void Apply(IClassInstance instance, string schemaname )
{
instance.Table(schemaname + instance.EntityType.Name);
}
}
如果是这样,我的问题是这样的。如果我能够达到上面提到的点,它会解决我的每个租户的架构问题吗?其次,即使上面在编译时没有给出任何错误(技术上不应该)我应该如何将模式名传递给那个覆盖?我的意思是我应该怎么打电话,因为这只是一个约定,我不能即时操纵它(我实际上想要这样做)