【发布时间】:2018-12-23 02:33:47
【问题描述】:
我正在设计一个多租户应用程序。我有一个租户实体、用户实体和多个其他具有 TenantId 属性的实体。
我开始向我的租户实体添加子引用,但查看其他代码示例让我相信这不是让子实体正确注册 TenantId 外键的“正确”方法。但是,如果我不将子集合添加到我的租户实体,则迁移不会将 TenantId 外键注册到子集合。
在共享架构多租户模式中管理这些关系的正确(或建议)方法是什么?
例如,假设我有一个租户,其用户都可以访问其租户内的出租车、车库和区域。
注意:我在我的真实代码中使用了一个基类,但我认为这会使示例变得复杂,所以我故意将所有内容都拼写出来。
public class Tenant
{
public long Id { get; set; }
public string Name { get; set; }
public ICollection<User> Users { get; set; }
// Should the below properties be left out?
public ICollection<Taxi> Taxis { get; set; }
public ICollection<Garage> Garages { get; set; }
public ICollection<Zone> Zones { get; set; }
}
public class User
{
public long Id { get; set; }
public long TenantId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class Taxi
{
public long Id { get; set; }
public long TenantId { get; set; }
public string Name {get; set; }
}
public class Garage
{
public long Id { get; set; }
public long TenantId { get; set; }
public string Name { get; set; }
}
public class Zone
{
public long Id { get; set; }
public long TenantId { get; set; }
public string Name { get; set; }
}
【问题讨论】:
标签: c# .net multi-tenant