gpt4 book ai didi

c# - 在单个上下文中使用多个模式的 Entity Framework 和迁移

转载 作者:行者123 更新时间:2023-11-30 17:06:18 24 4
gpt4 key购买 nike

我正在使用 Entity Framework Code First 开发 Multi-Tenancy 应用程序。每个租户在数据库中都有不同的模式,但应用程序将有一个适用于所有租户的上下文和模型。

Entity Framwork 6 能够在同一个环境中使用多个模式和多个上下文数据库,但我没有找到在单个上下文中使用多个模式的方法。

我已经(通过命令行)生成了到默认“dbo”模式的迁移。我想使用这些迁移更新其他模式。

最佳答案

虽然我同意多上下文绝对是更好的方式(这也是我设置自己的项目的方式),但我想回答您最初的问题,即如何在单一上下文中使用多个模式:

在每个模型的映射配置中,您可以调用“ToTable(myTableName, mySchema)”来修改表所属的模式:

public class MyEntityMap : EntityTypeConfiguration<MyEntity>
{
public MyEntityMap ()
{
HasKey(t => t.MyId);
Property(t => t.MyId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

ToTable("MyEntity", "MySchema");
}
}

这将允许您在维护单个上下文的同时分别设置每个表的架构。

由于您声明要在不同的模式中使用相同的模型,这使得在不了解您的设置的更多信息的情况下变得更加困难。如果您只与少数客户打交道并且不介意在代码中维护他们的模式,那么您可以简单地为每个模式创建一个映射(如上所述),然后为每个客户添加一个新的 DbSet。如果您正在尝试使其可扩展到大量客户,那么我强烈建议您研究一种不同的方法,因为当您的 dba 在不同模式中看到 100 多个相同的表而不是在每个表上使用 customerID 列时,他可能会尖叫.

关于c# - 在单个上下文中使用多个模式的 Entity Framework 和迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15479606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com