c#自定义ORM框架-实体类扩展属性

2024-06-10 08:36

本文主要是介绍c#自定义ORM框架-实体类扩展属性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

步骤一、建立扩展属性类

实体类扩展属性要继承Attribute基类完成

步骤二、创建实体类并引用扩展实体类属性

Attributes属性定义,主要标明表名和主键名字

/// <summary>
///  表名
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
[System.Serializable]
public class TableNameAttribute : Attribute
{public object _value { get; private set; }public TableNameAttribute(string tableName){this._value = tableName;}
}/// <summary>
/// 主键名
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
[System.Serializable]
public class PrimaryKeyAttribute : Attribute
{public object _value { get; private set; }public PrimaryKeyAttribute(string primaryKey){this._value = primaryKey;}
}// 使用方式(例)/// <summary>/// 学生类/// </summary>[TableName("MapRecord")][PrimaryKey("ID")]public class Student{// 身份IDpublic int Id { get; set; }// 名字public string Name { get; set; }// 长度public long Length { get; set; }}

 1 [AttributeUsage(AttributeTargets.Property)]2     public class FieldAttribute : Attribute3     {4         /// <summary>5         ///是否为主键(true/false)6         /// </summary>7         public bool PropertyKey { get; set; }8         /// <summary>9         /// 是否为自动增长(true/false)
10         /// </summary>
11         public bool Identity { get; set; }
12     }
1 [AttributeUsage(AttributeTargets.Class)]
2     public class TableAttribute:Attribute
3     {
4         /// <summary>
5         /// 数据库表名
6         /// </summary>
7         public string TableName { get; set; }
8     }

 [Table(TableName = "emesc.Dome")]2     [Serializable]3     public class Dome4     {5         [Field(PropertyKey = true)]6         public string EMP_NO { get; set; }7         public string EMP_NAME { get; set; }8         public string EMP_DESC { get; set; }9         public string TYPE { get; set; }
10         public string EMP_RANK { get; set; }
11         public string EMP_PASS { get; set; }
12         public object FACTORY_CODE { get; set; }
13         public DateTime QUIT_DATE { get; set; }
14         public object CALENDAR_CODE { get; set; }
15     }

/// <summary>/// 主键特性(在实体类的上方加这个特性,指定该类的主键名称)/// </summary>[AttributeUsage(AttributeTargets.Class)]public class PrimaryKeyAttribute : Attribute{private PrimaryKeyAttribute(){}private string _name;/// <summary>/// 构造方法/// </summary>/// <param name="name"></param>public PrimaryKeyAttribute(string name){_name = name;}/// <summary>/// 主键名称/// </summary>public string Name{get { return _name; }}}

这篇关于c#自定义ORM框架-实体类扩展属性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

C#中SortedSet的具体使用

《C#中SortedSet的具体使用》SortedSet是.NETFramework4.0引入的一个泛型集合类,它实现了一个自动排序的集合,内部使用红黑树数据结构来维护元素的有序性,下面就来介绍一下如... 目录基础概念主要特性创建和初始化基本创建方式自定义比较器基本操作添加和删除元素查询操作范围查询集合运

C# Opacity 不透明度的具体使用

《C#Opacity不透明度的具体使用》本文主要介绍了C#Opacity不透明度的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录WinFormsOpacity以下是一些使用Opacity属性的示例:设置窗体的透明度:设置按钮的透

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

C#中的Drawing 类案例详解

《C#中的Drawing类案例详解》文章解析WPF与WinForms的Drawing类差异,涵盖命名空间、继承链、常用类及应用场景,通过案例展示如何创建带阴影圆角矩形按钮,强调WPF的轻量、可动画特... 目录一、Drawing 是什么?二、典型用法三、案例:画一个“带阴影的圆角矩形按钮”四、WinForm

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

C#之枚举类型与随机数详解

《C#之枚举类型与随机数详解》文章讲解了枚举类型的定义与使用方法,包括在main外部声明枚举,用于表示游戏状态和周几状态,枚举值默认从0开始递增,也可手动设置初始值以生成随机数... 目录枚举类型1.定义枚举类型(main外)2.使用生成随机数总结枚举类型1.定义枚举类型(main外)enum 类型名字