FreeSql (三十五)CodeFirst 自定义特性

比如项目内已经使用了其它 orm,如 efcore,这样意味着实体中可能存在 [Key],但它与 FreeSql [Column(IsPrimary = true] 不同。

Q: FreeSql 实体特性为啥这么别扭?

A: 为了考虑一致性用法,全部封装在 ColumnAttribute 下,这样用户使用起来,不用到处 using 或者 回忆特性应该用哪个名字,如自增 [Column(IsIdentity = true)] 即可。

FreeSql 提供 AOP 自定义特性功能,实现与多个 orm 共同拥有一套实体特性,可避免重复定义特性。

以下的示例代码,FreeSql 使用 EFCore 的实体特性。

fsql.CodeFirst.ConfigEntity<ModelAopConfigEntity>(a => a.Property(b => b.pkid).IsPrimary(true));fsql.Aop.ConfigEntity = (s, e) => {var attr = e.EntityType.GetCustomAttributes(typeof(System.ComponentModel.DataAnnotations.Schema.TableAttribute), false).FirstOrDefault() as System.ComponentModel.DataAnnotations.Schema.TableAttribute;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;
};[System.ComponentModel.DataAnnotations.Schema.Table("xxx")]
class ModelAopConfigEntity {[System.ComponentModel.DataAnnotations.Key][Column(IsPrimary = false)]public int pkid { get; set; }
}

就这样,FreeSql 的实体特性就可以和 EFCore 那样设定了。其他自增、乐观锁等,依葫芦画瓢便是。

优先级

数据库特性 > 实体特性 > FluantApi(配置特性) > Aop(配置特性)

系列文章导航

  • (一)入门

  • (二)自动迁移实体

  • (三)实体特性

  • (四)实体特性 Fluent Api

  • (五)插入数据

  • (六)批量插入数据

  • (七)插入数据时忽略列

  • (八)插入数据时指定列

  • (九)删除数据

  • (十)更新数据

  • (十一)更新数据 Where

  • (十二)更新数据时指定列

  • (十三)更新数据时忽略列

  • (十四)批量更新数据

  • (十五)查询数据

  • (十六)分页查询

  • (十七)联表查询

  • (十八)导航属性

  • (十九)多表查询

  • (二十)多表查询 WhereCascade

  • (二十一)查询返回数据

  • (二十二)Dto 映射查询

  • (二十三)分组、聚合

  • (二十四)Linq To Sql 语法使用介绍

  • (二十五)延时加载

  • (二十六)贪婪加载 Include、IncludeMany、Dto、ToList

  • (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询

  • (二十八)事务

  • (二十九)Lambda 表达式

  • (三十)读写分离

  • (三十一)分区分表

  • (三十二)Aop

  • (三十三)CodeFirst 类型映射

  • (三十四)CodeFirst 迁移说明

  • (三十五)CodeFirst 自定义特性

转载于:https://www.cnblogs.com/FreeSql/p/11531576.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相随心转,枯荣立现

宋朝时&#xff0c;有高孝标和高孝积两个双胞胎兄弟&#xff0c;举止言谈和才思颖悟都象同一人。十六岁时&#xff0c;他们一齐考上秀才。婚后&#xff0c;父母为使媳妇能辨认丈夫&#xff0c;命令他们穿着不同衣裳和鞋子&#xff0c;以便辨认。有一天&#xff0c;他们遇到陈希…

查看 linux 硬件信息:内存、分区、系统、环境变量、防火墙、路由、端口监听、进程、CPU...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、linux CPU大小&#xff1b; 其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg…

成功人士高效率的工作法

现在的人总是忙个不停&#xff0c;尤其企业家或高阶主管大多身兼数职&#xff0c;为了达成工作目标&#xff0c;不得不经常加班。加上现在社交媒体和各种电子产品的诱惑让时间更加不够用了。每天察看邮件并即时回覆并不代表工作效率。如何排除干扰、克服惰性和避免超时工作才是…

R语言 线性回归分析实例

y,X1,X2,X3 分别表示第 t 年各项税收收入(亿元)&#xff0c;某国生产总值GDP(亿元)&#xff0c;财政支出(亿元)和商品零售价格指数(%). (1) 建立线性模型&#xff1a; ① 自己编写函数&#xff1a; > library(openxlsx) > data read.xlsx("22_data.xlsx",shee…

maven 工程 pom.xml 中 relativePath 的作用

Maven parent.relativePath 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 默认值为../pom.xml 查找顺序&#xff1a;relativePath元素中的地址–本地仓库–远程仓库 设定一个空值将…

【Cef编译】 CefSharp编译失败,检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”...

编译CefSharp生成后一个libcef_dll_wrapper.lib时&#xff0c;供CefSharp使用。结果CefSharp编译的时候报错。遇到以下异常&#xff1a;libcef_dll_wrapper.lib(binary_value_ctocpp.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值…

做老板欣赏的优秀员工 十大准则你达标吗?

在一个企业里&#xff0c;什么样的员工才是优秀的员工&#xff1f;优秀的员工拥有的怎样的特质&#xff1f;同在一个公司工作&#xff0c;同样的学历与相仿的年龄&#xff0c;为什么有的人总是业绩更好、工资更高、待遇更优秀、更能够获得老板的信任&#xff1f;这是目前许多企…

2 小时学会 springboot ( 附实例讲解 )

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一.什么是spring boot Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention…

管理拾穗:四眼原则

日前听到一位现在服务于一家德国公司的朋友提及他们公司里的主管有一个四眼原则(Four eyes principle)&#xff0c;意思是如果有一份对外的重要文件要发出前&#xff0c;要经过两个人(四个眼睛)看过&#xff0c;确定内容无误之后&#xff0c;再发出。我也曾经在一家国际知名的德…

CEF编译 执行gn args out\Release_GN_x86异常

gn args out\Debug_GN_x86 用来配置编译参数&#xff0c;执行gn args out\Release_GN_x86时异常&#xff1a; Toolchain is out of date. Run "gclient runhooks" to update the toolchain, or set DEPOT_TOOLS_WIN_TOOLCHAIN0 to use the locally installed toolcha…

成功者刻骨铭心的一句话

您知道吗&#xff1f;在这个世界上有许多名人和飞黄腾达的企业家。他们的成功除了靠自己的努力外&#xff0c;还靠来自他人的启发&#xff0c;改变了他们的观点&#xff0c;因而攀上了人生的巅峰。就像美国著名顾问公司盖洛普&#xff08;Gallup&#xff09;的CEO吉姆‧克利夫顿…

js中的鼠标右键点击事件

https://www.cnblogs.com/sea-stream/p/9638870.html window.onload function(){//去掉默认的contextmenu事件&#xff0c;否则会和右键事件同时出现。document.oncontextmenu function(e){e.preventDefault();};document.getElementById("test").onmousedown fun…

拜托!面试请不要再问我 Spring Cloud 底层原理 ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 >出处&#xff1a; >https://www.fangzhipeng.com > 本文出自[方志朋的博客](http://blog.csdn.net/forezp) 本文为转载文章&…

Django ORM 知识点总结

Query是如何工作的 Django QuerySet是懒执行的&#xff0c;只有访问到对应数据的时候&#xff0c;才会去访问数据库。另外如果你再次读取查询到的数据&#xff0c;将不会触发数据库的访问&#xff0c;而是直接从缓存获取。 比如 # 这里不会访问数据库&#xff0c;origins只是一…

22天养成好习惯,一年后脱胎换骨!

第一个习惯&#xff1a; 每天对镜子的自己微笑。 亲爱的&#xff0c;如果你都不喜欢自己的话&#xff0c;怎么可能指望别人喜欢你&#xff1f; 第二个习惯&#xff1a; 每天用凉水洗脸。 凉水洗脸&#xff0c;皮肤健康&#xff1b;热水洗脚&#xff0c;强似吃药。 第三个习…

springCloud - 第1篇 - 服务的注册 Eureka

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;这个系列不定时更新&#xff0c;只是个人的学习分享&#xff0c; 内容全程参考书目&#xff1a; 《Spring Cloud 与 Do…

js中的Map对象

var map new Map();//map对象中添加键值对map.set("name","tom");map.set("age",35);map.set("sex",0);//获取map对象中的值map.get("name")//tom//遍历map 函数中第一个参数是value&#xff0c;第二个参数是keymap.forEa…

十六个字 一辈子学不完

1、道歉&#xff1a;并不总意味着你是错的&#xff0c;它只是意味着你更珍惜你们之间的关系。 2、相爱&#xff1a;不是寻找一个完美的人&#xff0c;而是学会用完美的眼光&#xff0c;去欣赏一个不完美的人。 3、专一&#xff1a;不是一辈子只喜欢一个人&#xff0c;…

解决:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘ip‘ at row 1

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 报错&#xff1a; SQL []; Data truncation: Data too long for column ip at row 1; nested exception is com.mysql.jdbc.MysqlDa…

Xampp配置本地域名及常见错误解决

Xampp配置本地域名及常见错误解决 本地域名配置1、计算机-->C盘-->Windows-->System32-->drivers-->etc-->hosts127.0.0.1 localhost//设置你要配置的本地域名2、计算机-->XAMPP-->apache-->conf-->extra-->httpd-vhosts.conf<Virtu…