Я работаю над созданием мультитенантного приложения.У меня есть сущность Tenant, сущность User и несколько других сущностей, которые имеют свойство TenantId.
Я начал добавлять дочерние ссылки на свою сущность Tenant, но просмотр других примеров кода заставляет меня поверить, что это не так.«правильный» способ заставить дочерние объекты правильно зарегистрировать внешний ключ TenantId.Однако, если я не добавляю дочерние коллекции в свою сущность Tenant, миграции не регистрируют внешний ключ TenantId для детей.
Каков правильный (или предлагаемый) способ управления этими отношениями вшаблон мультитенантной схемы Shared Schema?
Например, предположим, что у меня есть Арендатор с Пользователями, у всех из которых есть доступ к Такси, Гаражам и Зонам в пределах их Арендатора.
Примечание:Я использую базовый класс в своем реальном коде, но решил, что это усложнит пример, поэтому я намеренно все изложил.
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; }
}