当前位置: 首页 > news >正文

淘宝网站的建设辽宁网站建站系统哪家好

淘宝网站的建设,辽宁网站建站系统哪家好,网页制作软件是哪个,哪里可以检测钢结构防火涂料目录 值对象优点 值对象的需求 值类型的实现 值类型GEO的实现 值类型MultilingualString的实现 案例:构建表达式树,简化值对象的比较 值对象优点 把有紧密关系的属性打包为一个类型把领域知识放到类的定义中 class shangjia {long id;string nam…

目录

值对象优点

值对象的需求

值类型的实现

值类型GEO的实现

值类型MultilingualString的实现

案例:构建表达式树,简化值对象的比较


值对象优点

  1. 把有紧密关系的属性打包为一个类型
  2. 把领域知识放到类的定义中
class shangjia
{long id;string name;Geo location;
}class Geo
{double jingdu;double weidu;
}

值对象的需求

  1. “商品”实体中的重量属性。我们如果把重量定义为double类型,那么其实是隐含了一个“重量单位”的领域知识,使用这个实体类的开发人员就需要知道这个领域知识,而且我们还要通过文档等形式把这个领域知识记录下来,这又面临一个文档和代码修改同步的问题。
  2. 实现:定义一个包含Value(数值)、Unit(单位)的Weight类型,然后把“商品”的重量属性设置为Weight类型。
    class Shangpin
    {long id;string name;Weight weight;
    }class Weight
    {long Value;WeightUnit Unit;
    }
    enum WeightUnit{G,KG}
  3. 很多数值类型的属性其实都是隐含了单位的,比如金额隐含了币种信息。

值类型的实现

“从属实体类型(owned entities)”:使用Fluent API中的OwnsOne等方法来配置。

在EF Core中,实体的属性可以定义为枚举类型,枚举类型的属性在数据库中默认是以整数类型来保存的。对于直接操作数据库的人员来讲,0、1、2这样的值没有“CNY”(人民币)、“USD”(美元)、“NZD”(新西兰元)等这样的字符串类型值可读性更强。EF Core中可以在Fluent API中用HasConversion<string>()把枚举类型的值配置成保存为字符串。


public class Entity1
{public int Id{ get; set; }public string Name{ get; set; }public CurrencyName Currency{ get; set; }
}enum CurrencyName
{CNY,USD,NZD
}builder..Property(e=>e.Currency).HasConversion<string>().HasMaxLenght(10);

值类型GEO的实现

record Geo{public double Longitude { get; init; }public double Latitude { get; init; }public Geo(double longitude, double latitude){if(longitude<-180||longitude>180)throw new ArgumentException("longitude invalid");if (latitude < -90 || latitude > 90)throw new ArgumentException("longitude invalid");this.Longitude = longitude;this.Latitude = latitude;}
}builder.OwnsOne(c=>c.Location);

值类型MultilingualString的实现

record MultiLangString(string Chinese, string? English);public class Blog
{public int Id { get; set;}public MultiLangString Title { get; set; }public MultiLangString Body { get; set; }
}//builder.OwnsOne(e=>e.Title);
//builder.OwnsOne(e=>e.Body);builder.OwnsOne(c=>c.Title, x => {x.Property(e=>e.Chinese).HasMaxLength(255);x.Property(e=>e.English).HasColumnType("varchar(255)");});
builder.OwnsOne(c=>c.Body, x => {x.Property(e=>e.Chinese);x.Property(e=>e.English).HasColumnType("varchar(Max)");
});

案例:构建表达式树,简化值对象的比较

目前版本,如果需要进行数据筛选,值对象的属性不能直接进行相等比较,只能把值对象的各个属性逐个进行比较,如果属性较多或需要相等比较的代码较多的话,操作会比较麻烦,可以构建表达式树来生成一个进行相等比较的表达式,从而简化EF Core中值对象的比较。

错误写法
var x = db.blogs.First(b => b.Title == new MultiLangString("你好", "hello"));
var a = db.blogs.First(b => b.Title.Equals(new MultiLangString("你好", "hello")));正确写法
var a = db.blogs.First(b => b.Title.Chinese=="你好"&&b.Title.English=="hello");

NETBookMaterials/最后大项目代码/YouZack-VNext/Zack.Infrastructure/EFCore/ExpressionHelper.cs at main · yangzhongke/NETBookMaterials

Nuget:Zack.Infrastructure

var a = db.blogs.First(ExpressionHelper.MakeEqual((Blog b) => b.Title,(new MultiLangString("你好", "hello"))));
http://www.yayakq.cn/news/899737/

相关文章:

  • 建设一个网站流程常州城投建设招标网站
  • 专业建站是什么wordpress 酒店中文主题
  • 做网站添加本地图片wordpress文章显示数量
  • 上海做网站公司有哪些wordpress 会员组
  • 网页设计板式网站wordpress修改文章浏览次数
  • 网站怎么做支付宝接口室内装修设计图片欣赏
  • 山西手机网站建设邢台做wap网站
  • 网站首页的动态视频怎么做的做网站挂谷歌广告赚钱吗
  • 怎么做国内网站东营网站建设
  • 有帮忙做儿童房设计的网站吗郑州港区建设投资公司网站
  • 专业企业网站搭建服务火车头获取不到wordpress列表
  • 买个人家的网站绑定自己的域名视频网站外链怎么做
  • 网站开发两端对齐底行左对齐管理学试题库及答案
  • 网站备案 公司企业网盘解决方案
  • 建设知道购物网站杭州做网站公司有哪些
  • 贵州华瑞网站建设有限公司云校招企业服务平台
  • 网站搜索引擎拓客孝感网站开发
  • 常州专业网站建设怎样在内网建设一个网站
  • 网站设计价格大概是中国十大品牌策划公司
  • 网站栏目英文网站推广效果怎么样
  • 做网站电脑开一天用多少钱黑五手表网站
  • 网站建设的方案书建设中的网站备案期间做什
  • 免费视频网站推荐做类似淘宝一样的网站
  • wordpress访问报错seo关键词排名怎么提升
  • 驻马店住房和城乡建设厅网站wordpress 进后台白屏
  • 一级a做网站免费百度网络优化推广公司
  • 如何降低网站相似度wordpress实现积分
  • 防止网站被采集云校网站建设
  • 做娱乐网站网站哪些数据
  • 建设一个自己的网站商标查询官网