EF Core中实现值对象

[复制链接]
发表于 2025-11-2 15:07:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次
值对象长处
值对象的需求
值范例的实现
值范例GEO的实现
值范例MultilingualString的实现
案例:构建表达式树,简化值对象的比力


值对象长处

      
  • 把有细密关系的属性打包为一个范例  
  • 把范畴知识放到类的界说中
  1. class shangjia
  2. {
  3.         long id;
  4.         string name;
  5.         Geo location;
  6. }
  7. class Geo
  8. {
  9.         double jingdu;
  10.         double weidu;
  11. }
复制代码
值对象的需求

      
  • “商品”实体中的重量属性。我们假如把重量界说为double范例,那么实在是隐含了一个“重量单位”的范畴知识,使用这个实体类的开辟职员就必要知道这个范畴知识,而且我们还要通过文档等情势把这个范畴知识记载下来,这又面临一个文档和代码修改同步的标题。  
  • 实现:界说一个包罗Value(数值)、Unit(单位)的Weight范例,然后把“商品”的重量属性设置为Weight范例。
    1. class Shangpin
    2. {
    3.         long id;
    4.         string name;
    5.         Weight weight;
    6. }
    7. class Weight
    8. {
    9.         long Value;
    10.         WeightUnit Unit;
    11. }
    12. enum WeightUnit{G,KG}
    复制代码

  • 很多数值范例的属性实在都是隐含了单位的,好比金额隐含了币种信息。
值范例的实现

“附属实体范例(owned entities)”:使用Fluent API中的OwnsOne等方法来设置。
在EF Core中,实体的属性可以界说为罗列范例,罗列范例的属性在数据库中默认是以整数范例来生存的。对于直接使用数据库的
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表