Id字段上的DbKey就是自定义特性
///
/// 用户信息
///
public class User
{
[DbKey]
public string Id { get; set; }
public string Name { get; set; }
}
继承Attribute,实现自定义特性DbKey
namespace CustomerAttribute
{
///
/// 数据库主键
///
public class DbKey : Attribute
{
public string Description { get; set; }
public DbKey()
{
}
public DbKey(string description)
{
this.Description = description;
}
}
}
namespace CustomerAttribute
{
///
/// 用户信息
///
public class User
{
[DbKey]
public string Id { get; set; }
public string Name { get; set; }
}
///
/// 用户角色
///
public class UserRole
{
[DbKey(“用户ID”)]
public string UserId { get; set; }
[DbKey(“角色ID”)]
public string RoleId { get; set; }
}
}
namespace CustomerAttribute
{
class Program
{
///
/// 获取数据库主键字段
///
///
///
private static IEnumerable getDbKeyFields()
{
// 获取当前类中的公共字段
var fields = typeof(T).GetProperties();
// 查找有DbKey特性的字段
var keyFields = fields.Where(field => (DbKey)Attribute.GetCustomAttribute(field, typeof(DbKey)) != null);
return keyFields;
}
private static string getDescription(PropertyInfo field)
{
string result = string.Empty;
var dbKey = (DbKey)Attribute.GetCustomAttribute(field, typeof(DbKey));
if (dbKey != null) result = dbKey.Description;
return result;
}
static void Main(string[] args)
{
try
{
var userKeyFields = getDbKeyFields();
Console.WriteLine(“User表的主键为:” + string.Join(“,”, userKeyFields.Select(field => field.Name)));
var userRoleKeyFields = getDbKeyFields();
Console.WriteLine(“UserRole表的主键为:” + string.Join(“,”, userRoleKeyFields.Select(field => field.Name)));
foreach (PropertyInfo field in userRoleKeyFields)
{
string description = getDescription(field);
Console.WriteLine(string.Format(“{0}字段的描述信息为:{1}”, field.Name, description));
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
Console.ReadLine();
}
}
}
}
一些Orm的实现,就是通过解析特性信息,动态生成数据库表
EntityFrameworkCore 根据实体类自动创建数据库
1.首先新建 Asp.Net Core WebApi 项目 2.添加一下引用 : 2.1 Pomelo.EntityFrameworkCore.MySql(我用的Mysql 根据自己情况引用就行) …
学习MVC之租房 站(三)-编写实体类并创建数据库
在上一篇中,搭建好了项目框架,并配置了EF.Log4Net和进程外Session.接下来会编写Eneity类并采用CodeFirst的方式 …
Hibrenate实现根据实体类自动创建表或添加字段
Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 实现: 在配置hibernate的配置文件中将hbm2ddl.auto设置为update,如:Xml代码&l …
阶段3 1.Mybatis_12.Mybatis注解开发_5 mybatis注解建立实体类属性和数据库表中列的对应关系
创建新项目,一对多 复制刚才关闭的项目的文件 复制到们的新项目里面 复制包的依赖 删减相关代码.只保留这三个查询的方法 模糊查询改成传统的占位符的方式 之前是可以自定义实体类的属性字段,和数据库的字典 …
Do You Kown Asp.Net Core – 根据实体类自动创建Razor Page CURD页面模板
Scaffolding Template Intro 我们知道在Asp.Net MVC中,如果你使用的EF的DBContext的话,你可以在vs中通过右键解决方案-添加控制器-添加包含视图的控制器,然 …
IntelliJ IDEA 2017版 spring-boot 实现jpa基本部署,通过实体类自动建立数据库
一.添加Spring Boot JPA-Hibernate步骤 1.在pom.xml添加mysql,spring-data-jpa依赖 2.在application.properties文件 …
java工具类–自动将数据库表生成javabean
最近和数据库的表打交道挺多的,因为暂时做的是接口活. 在这过程中发现要把表转换成对应的javabean类型,字段少的表还行,如果不小心碰到几十个字段的他妈的写起来就有点麻烦了,万一碰到几百个的呢,那不 …
Hibernate由model类自动同步数据库表结构
在开发中遇到了个问题,每次测试数据库增加表结构的时候,本地pull下最新代码导致启动 错,上 搜了快速解决办法—->hibernate 配置属性中,hibernate.hbm2ddl.aut …
Hibernate根据实体类自动创建表
Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢单,只要在hibernate.cfg.xml里加上如下代码 Xml代码
随机推荐
mysql数据库使用
C#操作Mysql数据库的存储过程, 址 DATEDIFF() 函数返回两个日期之间的天数. 语法 DATEDIFF(date1,date2) date1 和 date2 参数是合法的日期或日期/时间 …
python:爬虫
模块: (1)url管理器:对url进行管理 (2) 页下载器(urllib2):将需要爬取的url指定的 页以字符串的形式下载下来 (3) 页解释器(BeautifulSoup):解析 利用urll …
PHP实现RESTful风格的API实例(三)
接前一篇PHP实现RESTful风格的API实例(二) .htaccess :重写URL,使URL以 /restful/class/1 形式访问文件 Options +FollowSymlinks R …
微软成立反 络犯罪中心,工作环境如美剧CSI情景
微软在总部大楼内设立新 络犯罪中心(Cybercrime Center),旨在针对全球恶意软件.僵尸 络以及其他互联 犯罪行为进行实时追踪并予以打击.微软将“ 络犯罪中心”设置在雷德蒙德总部大楼,目的 …
asp.net Handler中的IsReusable属性及在Handler中使用Session
大家在用HttpHandler的时候,一般都会有两个大的疑问(当然,前提是你有钻研精神的话,呵呵) 1. IsReusable到底什么意思实说,这个属性很多人都感兴趣,但搞懂的人确实不多.MSD …
本地yum源安装GCC
Linux环境下yum源安装GCC 前提条件是有Linux环境的安装盘ISO文件 在Linux系统中创建两个目录,一个是用来存放ISO文件,一个是用来挂载该ISO文件,如下: $mkdir /root …
JdbcTemplate学习笔记
JdbcTemplate学习笔记 1.使用JdbcTemplate的execute()方法执行SQL语句 Java 代码 jdbcTemplate.execute(“CREATE TABLE …
Hi3515支持NFS-ROOT启动
目前在做Hi3515平台监控项目,前期开发一直使用SDK里推荐的mount nfs方式来调试代码,虽然也算方便,但是我一直觉得用法NFS-ROOT才是最省事的方法,而且最接近最终用户使用环境,因为如果 …
linux设备驱动之字符设备驱动模型(2)
在上一篇中我们已经了解了字符设备驱动的原理,也了解了应用层调用内核函数的机制,但是我们每次操作设备,都必须首先通过mknod命令创建一个设备文件名,比如说我们要打开u盘,硬盘等这些设备,难道我们还要自 …
持续交付之软件包管理maven篇
背景 持续交付的我们常见的流程如下,其中有一个环节就是软件包管理 今天我们以maven仓库为示例,如下是Jenkins与CD生态: 持续交付的示例 5 Principles 五个原则 Deliver …
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树使用数据库创建和删除表32044 人正在系统学习中 相关资源:MinionProfitsTracker:随着市场价格波动,轻松识别最赚钱的奴才[在…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!