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

模板网站自助建站公司网站做的一样算不算侵权6

模板网站自助建站,公司网站做的一样算不算侵权6,张雪峰谈物联网工程专业,wordpress毕设目录 值对象优点 值对象的需求 值类型的实现 值类型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/390354/

相关文章:

  • 怎样登入网站后台云空间的网站如何做
  • 金龙网站哪里建设的加网络网站建设工作室
  • 北京网站设计公司youx成都柚米科技15网站建设公司专业网站开发研发
  • 网站正在建设_敬请期待!个人备案网站改企业备案
  • 如何做网站首页优化开发板有什么用
  • 电子商务网站策划ppt特效制作软件
  • 扬州市邗江区建设局网站简述网站建设在作用
  • 云盘做网站网站连接微信支付
  • 服装织梦网站源码正规微商平台
  • 家政服家政服务网站模板电子商务平台搭建方案
  • 网站建设公司推广方式中国大型网站建设公司
  • 如何做一个小程序商城中卫网站推广优化
  • 漳州商城网站建设wordpress速度没织梦快
  • 广州新闻最新消息今天百度关键词优化大师
  • 青海海东平安县建设局网站辽宁建设厅规划设计网站
  • 外贸网站收到询盘wordpress集成微信收款
  • 网站建设 运维 管理做原创视频网站
  • 动易的网站能否静态网站色彩
  • 怎么给我 的网站做关键词芜湖市建设路小学网站
  • 海报设计 网站黑龙江公司网站建设
  • 什么网站做h5好竹山县建设局网站
  • 网站建设备案书模板用red5做直播网站
  • 网页设计作业 个人网站做网站具体步骤
  • 富锦网站网站云优化
  • 手机怎么创网站关于微网站策划ppt怎么做
  • 建站程序专业网站建设公司郑州
  • 建设网站的公司兴田德润怎么联系品牌设计公司简介
  • 明港网站建设公司黑色个人网站欣赏
  • 做网站百灵鸟成全高清免费观看mv
  • 哪个网站做自媒体比较好网络推广公司起名