C#使用泛型+反射做为数据层时,一个很都头疼的问题,如何让C#属性在程序里识别出哪个属性是主键,在拼接SQL时,不能把主键拼接到SQL语句里。

这个需要自定义一个属性。新建一个类文件,命名为ProsperTest.cs

     public class Property : System.Attribute
{
public string Value { get; set; } public Property(string Value)
{
this.Value = Value;
}
}

在MODEL层新建一个跟表对应的属性AssetPurchase.cs类

         [Property("PrimaryKey")]
public long APId
{
set{ _apid=value;}
get{return _apid;}
}

在数据层代码中编写拼接SQL字符串代码

        foreach (PropertyInfo p in pros)
   {
//获取自定义属性
object[] objArray = p.GetCustomAttributes(false);
//判断是否已获取到自定义属性Property,如果已获取objArray.length>0,在此处用来过滤主键,
            拼接字符串不要把主键拼接进去在Id旁边添加属性名称“PrimaryKey”
if (objArray.Length <= )
{
strSql.Append(p.Name);
if (i < pros.Length - )
strSql.Append(",");
i++;
} }

C#在数据层过滤属性中的主键的更多相关文章

  1. 分布式系统中我们会对一些数据量大的业务进行分拆,分布式系统中唯一主键ID的生成问题

    分布式全局唯一ID生成策略​ https://www.cnblogs.com/vandusty/p/11462585.html 一.背景 分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订 ...

  2. Transactional Replication2:在Subscriber中,主键列是只读的

    在使用Transactional Replication时,Subscriber 被认为是“Read-Only”的 , All data at the Subscriber is “read-only ...

  3. MySQL中的主键,外键有什么作用详解

    MySQL中的主键,外键有什么作用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学关系型数据库的同学,尤其在学习主键和外键时会产生一定的困惑.那么今天我们就把这个困惑连根拔起 ...

  4. 获取mybatis注解方式新增数据时非自增插入的主键

    场景:插入数据的时候,获取不到非自增的主键.原因:对象中没有主键的值,插入后主键才有值. 解决方案:使用 @SelectKey @SelectKey中: statement是要运行的SQL语句,即查询 ...

  5. MySQL主从复制数据不一致问题【自增主键】

    前言: 今天遇到主从表不一致的情况,很奇怪为什么会出现不一致的情况,因为复制状态一直都是正常的.最后检查出现不一致的数据都是主键,原来是当时初始化数据的时候导致的.现在分析记录下这个问题,避免以后再遇 ...

  6. 深入理解Redis中的主键失效及其实现机制

    参考:http://blog.sina.com.cn/s/articlelist_1221155353_0_1.html 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids ...

  7. mysql如何让有数据的表的自增主键重新设置从1开始连续自增

    项目开发中,有些固定数据在数据表中,主键是从1自增的,有时候我们会删除一些数据, 这种情况下,主键就会不连续.如何恢复到像第一次插入数据一样主键从1开始连续增长, 这里我找到一种解决方法: 如上面一张 ...

  8. MySQL中的主键约束和外键约束

    1.主键约束 表通常具有包含唯一标识表中每一行的值的一列或一组列. 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性. 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束. 如 ...

  9. InnoDB中没有主键是如何运转的

    本文章翻译自 https://blog.jcole.us/2013/05/02/how-does-innodb-behave-without-a-primary-key/ 原文作者的创作背景 一个下午 ...

随机推荐

  1. Java之工厂方法

    普通工厂模式: 第一步:定义接口,坚持面向接口编程, package dp; public interface Sender {    public void send();} 第二步:实现接口: p ...

  2. 输入scanner,if-else

    import java.util.Scanner; public class Job{ public static void main(String[] args){ Scanner scanner ...

  3. [转]Python os.path模块

    os.path模块 原文链接:http://my.oschina.net/cuffica/blog/33494 basename('文件路径')    去掉目录路径,返回fname文件名 import ...

  4. react.js

    注释:      React JSX需要的注释格式是:      {/*....*/}      WebStorm默认的是:      /*.....*/   作为子节点 {/*...*/} 作为内联 ...

  5. hihocoder挑战赛26

    某蒟蒻成功的·写出了T1并rank16...小岛的题目真难... 传送门:http://hihocoder.com/contest/challenge26 T1 如果你想要暴力枚举的话显然是不行的 如 ...

  6. 采购信息记录修改[BDC]

    *&---------------------------------------------------------------------* *& *&---------- ...

  7. 用PHP解析类JSON字符串为数组的实现

    题目:把字符串嵌套关系转换成数组,字符串只包含成对中括号.数字和逗号字符串:(1,(1,2,(1,(1,2,(1)),3)),3,(1,(1,2,((1((1,(1,2,(1,2,3),4,5),3) ...

  8. python3练习-杨辉三角/帕斯卡三角形

    杨辉三角形式如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 # 期待输出: # [1] # [1, 1] # [1, 2, 1] # [1, 3, 3, ...

  9. Leetcode 详解(ReverseWords)

    Leetcode里面关于字符串的一些问题,描述如下: Given an input string, reverse the string word by word. For example,Given ...

  10. react验证码倒计时

    <!DOCTYPE html> <html> <head> <script src="../build/react.js">< ...