From fe168ee14fd07d117b925561a84c70051eb40c6a Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Mon, 20 Apr 2020 23:31:16 +0800 Subject: [PATCH] update --- 骚操作.md | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/骚操作.md b/骚操作.md index 25f1da4..5f39d21 100644 --- a/骚操作.md +++ b/骚操作.md @@ -286,25 +286,42 @@ var sql1 = fsql.Select() # 12、自定义实体特性、与其他 ORM 共用特性 -抛砖引玉,以下的示例代码,FreeSql 使用 EFCore 的实体特性: +本功能可实现与其他 ORM 使用一套 Attribute,避免维护两份实体特性的烦恼: + +> v1.4.0+ 已自动识别 EFCore 实体特性 Key/Required/NotMapped/Table/Column ```csharp fsql.Aop.ConfigEntity += (s, e) => { - var attr = e.EntityType.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.Schema.TableAttribute), false).FirstOrDefault() as System.ComponentModel.DataAnnotations.Schema.TableAttribute; + var attr = e.EntityType.GetCustomAttributes(typeof(MyTableAttribute), false).FirstOrDefault() as MyTableAttribute; if (attr != null) e.ModifyResult.Name = attr.Name; //表名 }; fsql.Aop.ConfigEntityProperty += (s, e) => { - if (e.Property.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.KeyAttribute), false).Any()) - e.ModifyResult.IsPrimary = true; //主键 + var attr = e.Property.GetCustomAttributes(typeof(MyColumnAttribute), false).FirstOrDefault() as MyColumnAttribute; + if (attr != null) + e.ModifyResult.Name = attr.Name; //字段名 }; -[System.ComponentModel.DataAnnotations.Schema.Table("xxx")] -class ModelAopConfigEntity { - [System.ComponentModel.DataAnnotations.Key] - [Column(IsPrimary = false)] +[MyTable("xxx")] +class YourEntity { + [MyColumn("id")] public int pkid { get; set; } } + +class MyTableAttribute : Attribute { + public string Name { get; } + public MyTableAttribute(string name) + { + this.Name = name; + } +} +class MyColumnAttribute : Attribute { + public string Name { get; } + public MyColumnAttribute(string name) + { + this.Name = name; + } +} ``` ---