私は以下のようなエンティティ構造を持っています
public abstract class Entity
{
public int Id { get; set; }
}
public class User : Entity
{
public ICollection<Product> Products { get; set; }
}
public class Warehouse : Entity
{
public ICollection<Product> Products { get; set; }
}
public class Product : Entity
{
public Warehouse Warehouse { get; set; }
public User User { get; set; }
}
ご覧のとおり、ユーザーは製品を所有でき、倉庫も製品を所有できます。そのため、エンティティ フレームワークは、null 値を許容できる Product テーブルに 2 つの外部キーを配置します。
以下のように、少し異なるエンティティ モデリングによって同様の構造を実現することもできます。
public class User : Entity
{
public ICollection<UserProduct> Products { get; set; }
}
public class Warehouse : Entity
{
public ICollection<WarehouseProduct> Products { get; set; }
}
public class Product : Entity
{
}
public class WarehouseProduct : Entity
{
public Product Product { get; set; }
public Warehouse Warehouse { get; set; }
}
public class UserProduct : Entity
{
public Product Product { get; set; }
public User user { get; set; }
}
最初のデザインは、新しいエンティティを導入することなくシンプルに見えますが、それが優れているかどうかはわかりません。
私はどちらが最善か、またはどの状況が他のものよりも優れているかを見つけようとしています.