日期:2014-05-17  浏览次数:21058 次

关于C# 反射的问题
自己写一个框架玩
现在准备通过反射实体类来生成sql语句
public class Employee
{
        private int m_EmpId;

        public int EmpId
        {
            get { return m_EmpId; }
            set { m_EmpId = value; }
        }

        private string m_EmpName;

        public string EmpName
        {
            get { return m_EmpName; }
            set { m_EmpName = value; }
        }

这个是我的实体类 我生成的sql语句就是
Insert into Employee(EmpId,EmpName) values(@EmpId,@EmpName);
现在的问题是 EmpId 对应的是数据库中表的主键 那么我生成的sql语句应该是
Insert into Employee(EmpName) values(@EmpName);
那么我反射的时候如何判断 EmpId 这个字段是主键?
在线等

------解决方案--------------------
在实体类中添加冗余字段来增加信息量,也就是说,你添加
private string KeyFiled;

private Type t;

在生成Model的时候
User u = new User();
u.KeyField = "id";
u.t = typeof(int)
------解决方案--------------------
[加个特性表明我是主键]
public int EmpId
        {
            get { return m_EmpId; }
            set { m_EmpId = value; }
        }

怎么加,怎么反射那个特性~你好好研究一下~
------解决方案--------------------
现在,我们可以给SupplierCode属性加一个注释,表示它是主键:

public class Supplier
{
    [Key]
    public string SupplierCode { get; set; }
    public string Name { get; set; }
}

EF  CodeFirst的情况是这样表示主键的