Bru*_*uza 5 c# entity-framework ef-code-first entity-framework-6
我正在使用实体框架代码优先开发多租户应用程序。每个租户在数据库中都有不同的架构,但应用程序将为所有租户提供单一的上下文和模型。
\n\nEntity Framwork 6 能够在同一个数据库中使用具有多个上下文的多个模式,但我没有找到在单个上下文中使用多个模式的方法。
\n\n我已(通过命令行)生成了到默认 \xe2\x80\x9cdbo\xe2\x80\x9d 架构的迁移。我想使用这些迁移来更新其他架构。
\n虽然我同意多个上下文绝对是更好的方法(也是我设置自己的项目的方式),但我想回答您最初的问题:如何在单个上下文中使用多个模式:
在每个模型的映射配置内部,您可以调用“ToTable(myTableName, mySchema)”来修改表所属的架构:
public class MyEntityMap : EntityTypeConfiguration<MyEntity>
{
public MyEntityMap ()
{
HasKey(t => t.MyId);
Property(t => t.MyId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
ToTable("MyEntity", "MySchema");
}
}
Run Code Online (Sandbox Code Playgroud)
这将允许您单独设置每个表的架构,同时维护单个上下文。
由于您声明您希望在不同的模式中使用相同的模型,这使得在不了解更多有关您的设置的情况下变得更加困难。如果您只与少数客户打交道,并且不介意在代码中维护他们的架构,那么您可以简单地为每个架构创建一个映射(如上所述),然后为每个客户添加一个新的 DbSet。如果您试图使其扩展到大量客户,那么我强烈建议您考虑一种不同的方法,因为当您的 dba 看到不同模式中的 100 多个相同的表而不是在每个表上使用 customerID 列时,他可能会尖叫。
| 归档时间: |
|
| 查看次数: |
4473 次 |
| 最近记录: |