C#根据反射生成sql语句(Update语句)

今天有人问我Update语句怎么搞,想了一下大致思路就是用特性去标识一下,主键,然后再去用反射的方式拼sql语句。

在C#中,我们可以使用特性(Attributes)来标识一个类的属性作为该类的主键(Primary Key)。如何定义一个自定义特性标识主键,并在实体类中使用该特性

首先,定义一个自定义特性来标识主键:

 一、主键特性 

    [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; }}}

把这个特性加到实体类的上方,并指定主键名称,就可以了,示例:

[PrimaryKey("code")]
///<summary>
/// 用户表
///</summary>
public class user
{/// <summary>/// 编号/// </summary>public int id { get; set; }/// <summary>/// 用户ID/// </summary>public int code { get; set; }/// <summary>/// 用户名/// </summary>public string name { get; set; }/// <summary>/// 密码 md5(md5()+创建时间)/// </summary>public string password { get; set; }/// <summary>/// 手机号/// </summary>public string mobile { get; set; }/// <summary>/// 1=男 2=女 3=未知/// </summary>public string sex { get; set; }/// <summary>/// 生日/// </summary>public DateTime? birthday { get; set; }/// <summary>/// 头像/// </summary>public string avatar { get; set; }/// <summary>/// 昵称/// </summary>public string nick { get; set; }/// <summary>/// 余额/// </summary>public decimal? balance { get; set; }/// <summary>/// 积分/// </summary>public int? point { get; set; }/// <summary>/// 用户等级/// </summary>public string grade { get; set; }/// <summary>/// 创建时间/// </summary>public DateTime create_time { get; set; }/// <summary>/// 更新时间/// </summary>public DateTime? update_time { get; set; }/// <summary>/// 1 = 正常 2 = 停用/// </summary>public string status { get; set; }/// <summary>/// 推荐人/// </summary>public int? pid { get; set; }/// <summary>/// 删除标志 有数据就是删除/// </summary>public string isdel { get; set; }/// <summary>/// 备注/// </summary>public string remarks { get; set; }
}

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

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

相关文章

旅游卡系统开发搭建

旅游卡系统的开发搭建是一个涉及多个步骤和关键因素的复杂过程。以下是关于旅游卡系统开发搭建的详细步骤和要点&#xff1a; 一、需求分析 目标用户调研&#xff1a;深入调研目标用户&#xff0c;了解他们的需求和痛点&#xff0c;从而确定系统的功能和特点。功能确定&#…

数据分析必备:一步步教你如何用Pandas做数据分析(20)

1、Pandas 分类数据 Pandas 分类数据的操作实例 数据通常实时包含重复的文本列。性别&#xff0c;国家/地区和代码等功能始终是重复的。这些是分类数据的示例。 分类变量只能采用有限的且通常是固定数量的可能值。除固定长度外&#xff0c;分类数据可能还具有顺序&#xff0c;…

elasticsearch安装与使用(1)-使用docker安装Elasticsearch

ES的优点&#xff1a; 1、分布式准实时2、提供REST风格的API接口&#xff0c;是用户可解借助任何语言使用https对ES执行请求来完成搜索任务&#xff1b;3、提供聚合功能 1、Elasticsearch安装 docker network create elastic docker pull docker.elastic.co/elasticsearch/e…

MySQL入门学习-聚合和分组.计数(COUNT()函数)

在 MySQL 中&#xff0c;聚合和分组是用于对数据进行汇总和分析的强大功能。聚合函数可以计算数据的总和、平均值、最小值、最大值等统计信息&#xff0c;而分组则可以将数据按照特定的字段进行分组&#xff0c;然后对每个分组进行聚合计算。计数&#xff08;COUNT() 函数&…

【MYSQL系列】mysql中text,longtext,mediumtext区别

【MYSQL系列】mysql中text,longtext,mediumtext区别 在MySQL数据库中&#xff0c;TEXT、LONGTEXT和MEDIUMTEXT都是用于存储大量文本数据的字段类型。它们之间的主要区别在于可存储的数据大小和性能方面的差异。本文将探讨这些字段类型的特点、使用场景和一些最佳实践。 TEXT类…

贪心(不相交的开区间、区间选点、带前导的拼接最小数问题)

目录 1.简单贪心 2.区间贪心 不相交的开区间 1.如何删除&#xff1f; 2.如何比较大小 区间选点问题 3.拼接最小数 1.简单贪心 比如&#xff1a;给你一堆数&#xff0c;你来构成最大的几位数 2.区间贪心 不相交的开区间 思路&#xff1a; 首先&#xff0c;如果有两个…

代码随想录算法训练营第三十二天|LeetCode122 买卖股票的最佳时机Ⅱ、LeetCode55 跳跃游戏、LeetCode45 跳跃游戏Ⅱ

题1&#xff1a; 指路&#xff1a;122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 思路与代码&#xff1a; 基本思路&#xff1a;一天买入一天卖出&#xff0c;得到每部分正利润作为局部最优解&#xff0c;例如prices[7, 1, 5, 3, 6, 4]中&#xff0c;…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十)- 微服务(10)

目录 12.5 RestClient操作索引库 12.5.1创建库 12.5.2 删除索引库 12.5.3 判断是否存在 12.6 RestClient操作文档 12.6.1 新增文档 12.6.2 查询文档 12.6.3 修改文档 12.6.4 删除文档 12.6.5 批量导入文档 12.5 RestClient操作索引库 酒店mapping映射 ​PUT /hotel{&…

shell简介

一、Shell 概念定义 Shell 是用 C 语言编写的程序&#xff0c;是用户使用 Linux 的桥梁&#xff0c;既是命令语言又是程序设计语言。 shell 脚本为 Shell 编写的脚本程序&#xff0c;常说的 shell 通常指 shell 脚本。 包含一系列命令的文本文件&#xff0c;这些命令按照特定…

调试环境搭建(Redis 6.X 版本)

今儿&#xff0c;我们来搭建一个 Redis 调试环境&#xff0c;目标是&#xff1a; 启动 Redis Server &#xff0c;成功断点调试 Server 的启动过程。使用 redis-cli 启动一个 Client 连接上 Server&#xff0c;并使用 get key 指令&#xff0c;发起一次 key 的读取。 视频可见…

【python解决】查询报%d format: a number is required, not str问题

【Python解决】查询报%d format: a number is required, not str问题 在Python中&#xff0c;字符串格式化是一种常见的操作&#xff0c;用于创建包含变量的字符串。如果你在使用%操作符进行格式化时遇到了%d format: a number is required, not str的错误&#xff0c;这意味着…

C# 集合(二) —— List/Queue类

总目录 C# 语法总目录 集合二 List/Queue 1. List2. Queue 1. List List有ArrayList和LinkedList ArrayList 类似数组&#xff0c;查找快&#xff0c;插入删除慢(相对)LinkedList 类似双向链表&#xff0c;查找慢(相对)&#xff0c;插入删除快 //ArrayList //ArrayList Arr…

ts和js有什么不同

TypeScript&#xff08;简称TS&#xff09;和JavaScript&#xff08;简称JS&#xff09;之间的主要区别可以归纳为以下几点&#xff1a; 类型系统&#xff1a; JS&#xff1a;是一种弱类型、动态类型的语言&#xff0c;变量的类型在运行时确定&#xff0c;没有静态类型选项。T…

基于SSM的旅游民宿预定系统【源码】【运行教程】

基于SSM的旅游民宿预定系统 一、项目介绍1. 游客功能2. 管理员功能3. 高级功能 二、项目技术栈三、项目运行四、项目演示总结 大家好&#xff0c;这里是程序猿代码之路&#xff01;随着旅游业的快速发展&#xff0c;民宿作为一种独特的住宿方式越来越受到游客的喜爱。为了提升用…

百华鞋业祝莘莘学子旗开得胜,一举夺魁

在知识的海洋中&#xff0c; 有一群人以笔为剑&#xff0c; 在漫长的岁月里不断磨砺&#xff0c; 只为迎接那场人生的重要战役——高考。 高考&#xff0c; 是学子们十几年寒窗苦读的见证&#xff0c; 是他们用奋斗书写青春考卷的舞台。 在这个舞台上&#xff0c; 他们将…

当前主流的App开发技术综述

一、引言 随着移动互联网的蓬勃发展&#xff0c;App&#xff08;应用程序&#xff09;已经成为人们日常生活中不可或缺的一部分。无论是社交、购物、娱乐还是工作学习&#xff0c;App都以其便捷、高效和个性化的特点深受用户喜爱。而在这一过程中&#xff0c;App开发技术也在不…

周末总结(2024/06/08)

工作 人际关系核心实践&#xff1a; 要学会随时回应别人的善意。执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己&#xff0c;抬高别人(无阴阳气息) 工作上的要点 现状&#xff08;接受破烂现状&#xff0c;改变状态&#xff09; - 和老师沟通过&…

ChatGPT-4o体验demo

OpenAI 最近推出了其最新的人工智能语言模型——GPT-4O。该模型是在原有 GPT-4 的基础上进行优化而成&#xff0c;旨在提升生成质量和响应速度。GPT-4O 采用了更加高效的架构设计&#xff0c;使其在处理复杂文本时表现出更快的速度和更高的准确性。GPT-4O 在训练过程中融入了最…

一些关于机器学习的思路和猜测

一、机器学习能做什么 1、网上说机器学习就是根据已有的图片、文字、视频资料&#xff0c;建立一个数据库&#xff0c;用一个处理算法&#xff0c;把已有的资料进行提取关键特征和一些联系&#xff0c;存入数据库中。 2、当学习到一定程度&#xff0c;就能跟人一样到实际场景…

kafka的leader和follower

leader和follower kafka的leader和follower是相对于分区有意义的&#xff0c;不是相对于broker。 因为每个分区都有leader和follower, leader负责读写数据。 follower负责复制leader的数据保存到自己的日志数据中&#xff0c;并在leader挂掉后重新选举出leader。 kafka会再…