(新)自己動手寫ORM框架(1)-增刪查改的使用


   之前寫過一個系列文章自己動手寫ORM框架,經過在多個項目的中的使用,對這套代碼進行了許多改進,下面是使用方法:

 新增學員信息代碼預覽:

 DBHelper db = DBHelper.getInstance();
 Student stu = new Student();
  stu.Name = "張三";
  stu.Gender = "";
  stu.Age = 28;
  stu.Address = "上海市徐匯區";
  
int count = db.Save<Student>(stu);   if (count > 0)   {   MessageBox.Show("新增成功!");   }

 

  修改學員信息:

  stu.UserID = 1;
  stu.Name = "李四";
  stu.Age = 22;
  db.Update<Student>(stu);

 

  刪除學員信息:

  Student student = m_stuList[i];

  //對象刪除
  db.Remove<Student>(student);

  //ID刪除
  db.Remove<Student>(student.UserID);

 

  查詢:

   //查詢所有學員信息
  List<Student> list = DB.FindAll<Student>();

  //根據ID查詢
  Student student = DB.FindById<Student>(5);

  //自定義SQL查詢
  List<Student> list1 = DB.FindBySql<Student>("SELECT * FROM U_Student WHERE U_Age < 28");

  //按某個列查詢
  List<Student> list2 = DB.FindByProperty<Student>("U_Name", "張三");

  //按精確條件查詢,這里是SELECT xxx FROM U_Student WHERE U_Name LIKE '%張%' OR U_Age < 28
  DbCondition cond1 = new DbCondition().Where().Like("U_Name", "").OrLessThan("U_Age", 28);
  List<Student> list3 = DB.Find<Student>(cond1);

  //關聯查詢,這個不用多說了,會SQL的都知道,查詢條件是 WHERE U_Name LIKE '張%'
  DbCondition cond2 = new DbCondition("SELECT s.*,c.teacher,c.className FROM U_Student s INNER JOIN U_Class c ON s.classID = c.ID").Where().RightLike("U_Name", "");
  List<Student> list4 = DB.Find<Student>(cond2);

  //這里是查詢 SELECT count(0) FROM U_Student WHERE U_Name = '張三' AND U_Age = 28
  DbCondition cond3 = new DbCondition().Where("U_Name", "張三").And("U_Age", 28);
  int count = DB.FindCount<Student>(cond3);

 

實體類配置:

namespace Entiry
{
    [Serializable]
    [Table(Name = "U_Student")]
    public class Student
    {
        //主鍵 INDENTITY自動增長標識
        [Id(Name = "UserID", Strategy = GenerationType.INDENTITY)]
        public int UserID { get; set; }

        //對應數據庫中的名字為U_Name
        [Column(Name = "U_Name")]
        public string Name { get; set; }

        [Column(Name = "U_Age")] // int? 允許int為NULL時不會報錯
        public int? Age { get; set; }

        [Column(Name = "U_Gender")]
        public string Gender { get; set; }

        [Column(Name = "U_Address")]
        public string Address { get; set; }

        [Column(Name = "U_CreateTime")]
        public DateTime? CreateTime { get; set; }

        [Column(Name = "ClassID")]
        public int? ClassID { get; set; }

        //下面2列 ClassName和Teacher字段是屬於班級表中的班級名稱和班主任
        //但是因為是外鍵表,關聯的班級編號:ClassID,所以做關聯查詢可以加這2個屬性
        //但是修改和插入則不需要這2列,只做查詢,所以加上IsInsert=false,IsUpdate=false
        [Column(Name = "ClassName",IsInsert=false,IsUpdate=false)]
        public string ClassName { get; set; }

        [Column(Name = "Teacher", IsInsert = false, IsUpdate = false)]
        public string Teacher { get; set; }
    }
}

 

  最后是配置文件:

  <configuration>
    <appSettings>
      <add key="DbType" value="sqlserver"/>
      <add key="connectionString" value="Data Source=.;Initial Catalog=OrmDB;User ID=test;Password=test;Trusted_Connection=no;Min Pool Size=10;Max Pool Size=100;"/>
  </appSettings>

  只需加連接字符串和數據庫類型,因為支持這里可以支持多種數據庫。

 

 源碼托管在github上,需要的可以去下載。

點擊下載:https://github.com/wangwei123/easy4net

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM