此特性需要安装Kogel.Dapper.Mssql或者Oracle 3.06及以上版本,实体类层需要安装Kogel.Dapper.Extension 3.06及以上版本

目录

1.实体类和数据库关系映射特性

1.[Identity]可以标识主键

  [Identity]
public int id { get; set; }

Identity内还可以使用IsIncrease指定字符串是否是自增,来判断插入语句是否需要给该字段赋值 

    [Identity(IsIncrease =true)]  //默认为true,是自增
public int Id { get; set; }

2.实体类名称和数据库表名不一致,或者属性名称和字段不一致

可以使用 [Display(Rename = "名称")] 特性标识

[Display(Rename = "users")]
public class testusers
{
[Display(Rename ="Content")]
public string testName222 { get; set; }
}

Rename填写数据库对应的表名或者字段名称,用来映射表关系

执行效果

查询时需要使用 FieldMatch<实体类>() 函数匹配映射实体类(3.1.8.5版本后不需要)

 3.Display使用AsName区别同表之间的关系

假设同一条表达式语句中查询了两次A表,这时使用where条件 Where<A>可能无法指定到底是判断哪张A表,

这时就需要使用AsName

[Display(AsName ="commm1")]
public class Comment:IBaseEntity<int>
{
[Identity(IsIncrease =true)]
public int Id { get; set; }
}
//继承同表,设置表名称
[Display(AsName = "commm2",Rename = "Comment")]
public class Comment1 : Comment
{ }

现在表达式如果需要判断第二个A表的条件就可以直接使用

表达式.Where<Comment1>(条件)来判断了,匿名类型返回字段和连表查询时都可以用到来避免冲突。

4.非表映射关系

可以使用   [Display(IsField = false)] 特性标识

框架隐射时就会排除该字段

2.使用原生Dapper是否可以用Kogel.Dapper的特性标识

目前支持原生Dapper的特性只有[Display(Rename = "名称")]

不过用法有点差别,需要先执行FieldMatch<T>()方法

然后实体类

这个FieldMatch函数是注册全局的,所以只需要执行一次

然后查看效果,字段“test111”的值变成了Rename指向“Content”的值

3.实体类预加载

在系统启动时可以使用 EntityCache.Register 注册实体类到内存中,后续表达式不会在重复反射实体类,减少反射时间,提升性能

此方法有三个重载

1.Register(Type type)

例如

EntityCache.Register(typeof("实体类"));

  

2.Register(Type []type)

可以通过反射获取实体类类型数组

3.Register(string assemblyString)

assemblyString:通过给定程序集的长格式名称加载程序集。

例如

EntityCache.Register("实体类层的类库名称");

  

完整Demo可以去Github上下载:

https://github.com/a935368322/Kogel.Dapper.Test

如有问题也可以加QQ群讨论:

技术群 710217654

框架开源,可以加群下载源码

[LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射的更多相关文章

  1. [LINQ2Dapper]最完整Dapper To Linq框架(七)---仓储模式

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  2. [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询

    此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper 支持.net framework4.5.1 ...

  3. [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  4. [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  5. [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL

    此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper支持.net framework4.6.1及 ...

  6. [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表联合与匿名类型返回

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  7. [LINQ2Dapper]最完整Dapper To Linq框架(八)---导航属性

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  8. HibernateCRUD基础框架(1)-实体类

    HibernateCRUD基础框架包括3篇文章,主要讲述整个CRUD基础框架的思路. 第1篇:讲述最基本的实体类,这些实体类是对SQL语言中的一些概念的封装. 第2篇:在这些实体类的基础上,开发一个& ...

  9. Hibernate学习笔记三:对象关系映射(一对一,一对多,多对一,多对多)

    如需转载,请说明出处:http://www.cnblogs.com/gudu1/p/6895610.html Hibernate通过关系映射来表示数据库中表与表之间的关系,关系映射可以通过两种方式:配 ...

随机推荐

  1. 1002. 写出这个数 (20)-PAT乙级真题

    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字.输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每一 ...

  2. JVM参数的配置及意义

    JVM参数设置.分析 因为在工作中遇到了JVM参数的配置,不明白,网上搜索发现一篇好文,转载至:https://www.cnblogs.com/redcreen/archive/2011/05/04/ ...

  3. 渗透测试-基于白名单执行payload--zipfldr.dll

    0x01 zipfldr.dll简介: zipfldr.dll自Windows xp开始自带的zip文件压缩/解压工具组件. 说明:zipfldr.dll所在路径已被系统添加PATH环境变量中,因此, ...

  4. 基于华为物联网IOT的应用开发 --- 基于.net 的SDK封装

    最近,物联网的概念比较热门,一大批厂商抢着占领物联网的高低,包括有华为物联网.阿里云物联网.腾讯物联网.AWS物联网等等,无法一一列举,一般物联网包含设备侧开发.平台侧开发.应用侧开发,三个部分构成了 ...

  5. python中函数定义与调用顺序问题

    def main(): try: mtd(3) except Exception as e: print("程序出现异常:", e) mtd(3) def mtd(a): if a ...

  6. SpringBoot HATEOAS用法简介

    REST风格简介 介绍HATEOAS之前先简单介绍一下REST,REST 是 Representational state transfer 的缩写,翻译过来的意思是表达性状态转换.REST是一种架构 ...

  7. Vue + Js 面试宝典

    https://github.com/rohan-paul/Awesome-JavaScript-Interviewshttps://github.com/nieyafei/front-end-int ...

  8. < 配置jupyer notebook遇到的问题 - 500 : Internal Server Error >

    < anaconda配置jupyer notebook遇到的问题 - 500 : Internal Server Error > 问题描述: 我的jupyer notebook是在anac ...

  9. Mysql UTF-8mb4字符集的问题

    官方Mysql手册链接 https://dev.mysql.com/doc/connectors/en/connector-j-reference-charsets.html Notes For Co ...

  10. 斯坦福机器学习课程 Exercise 习题二

    Exercise 2: Linear Regression 话说LaTex用起来好爽 Matlab代码 迭代并且画出拟合曲线 Linear regression 公式如下 hθ(x)=θTx=∑i=0 ...