自己写一个框架玩
现在准备通过反射实体类来生成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 这个字段是主键?
在线等

解决方案 »

  1.   

    在实体类中添加冗余字段来增加信息量,也就是说,你添加
    private string KeyFiled;private Type t;在生成Model的时候
    User u = new User();
    u.KeyField = "id";
    u.t = typeof(int)
      

  2.   

    1楼说的方法我觉得有点复杂  我有一个想法 比如说 用[Serializable]标记的类是可以被序列化的
    那么有没有什么标记 可以表示是主键ne ?
      

  3.   

    [加个特性表明我是主键]
    public int EmpId
            {
                get { return m_EmpId; }
                set { m_EmpId = value; }
            }怎么加,怎么反射那个特性~你好好研究一下~
      

  4.   

    现在,我们可以给SupplierCode属性加一个注释,表示它是主键:public class Supplier
    {
        [Key]
        public string SupplierCode { get; set; }
        public string Name { get; set; }
    }EF  CodeFirst的情况是这样表示主键的