实体框架数据建模最佳做法
本文关键字:最佳 建模 框架 数据 实体 | 更新日期: 2023-09-27 18:37:24
>我有如下所示的实体结构
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; }
}
如您所见,用户可以拥有产品,仓库也可以拥有产品。因此,实体框架将 2 个外键放在 Product 表上,这些外键可以为空。
我们还可以通过一些不同的实体建模来实现类似的结构,如下所示
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; }
}
第一个设计看起来更简单,没有引入新的实体,但不确定它是否更好。
我试图找到哪个是最好的,或者哪种情况使其中一个比其他更好。
继承也是可能的(EF/CodeFirst):
public abstract class Entity
{
public int Id { get; set; }
}
public class Product : Entity
{
}
public class Warehouse : Product
{
/* all product fields are available */
}
public class User : Product
{
/* all product fields are available */
}
在我看来,这更干燥=>"代码第一视图"。
关于继承的好文章:http://goo.gl/1igQ3