在写本章前先去网上找了一下关于ORM的相关资料,以为本章做准备,发现很多东西今天才了解,所以在这里也对ORM做不了太深入的分析,但还是浅谈一下EFW框架中的设计的简易ORM;文中有一点讲得很有道理,Dao与ORM的区别,Dao是对数据库操作的封装,编写的代码方式像一种设计方法,而ORM支持对象与数据结构的映射,更像一种代码开发工具,有了这个工具会让我们开发代码更简单方便;但是同一类工具有简单的也有复杂的,比如文字工具有简单的Notepad,也有复杂的Word,不是说有了复杂的简单的工具就不需要了,这要看你具体的场合了,你就只是想记录几段文字肯定用Notepad就已经足够了;同样道理,EFW框架中的ORM就想一个Notepad,如果在开发中想解决复杂的数据问题怎么办,那么建议你结合框架中的DAO方式一起使用;

 本文要点:

1.简易ORM包含哪些功能

2.如何使用

3.实体的自定义标签TableAttribute和ColumnAttribute

4.接口IORM和实体抽象基类AbstractEntity

5.ORM解析,根据实体标签配置生成相应SQL语句

6.简易ORM对比其他ORM好处

接下来我将从下面几个方面对框架中的ORM进行说明:

在我的想法中ORM主要是实现实体与数据库表之间数据转换的工具,让我们对数据库的操作不需要编写SQL语句,只要操作实体就可以了;而实体操作数据库又可以分为一对一单表操作、一对多多表操作,多对多关联表操作等等;而在本框架中只是实现了单表操作,但对其他操作方式怎么办了,就需要结合框架中的DAO来完成;还有在单表操作中,支持外键ID转换为名称显示;

ORM设计类关系图

 十四、EnterpriseFrameWork框架核心类库之简易ORM

2.如何使用

首先创建实体类,并配置好与数据库表的映射,但实体较多的时候此操作可以用一些代码生成工具来完成;

Book实体

 1   [Serializable]
 2     [Table(TableName = "Books", EntityType = EntityType.Table, IsGB = true)]
 3     public class Book : EFWCoreLib.CoreFrame.BusinessArchitecture.AbstractEntity
 4     {
 5         private int id;
 6         [Column(FieldName = "Id", DataKey = true, Match = "", IsInsert = false)]
 7         public int Id
 8         {
 9             get { return id; }
10             set { id = value; }
11         }
12         private string bookName;
13         [Column(FieldName = "BookName", DataKey = false, Match = "", IsInsert = true)]
14         public string BookName
15         {
16             get { return bookName; }
17             set { bookName = value; }
18         }
19         private decimal buyPrice;
20         [Column(FieldName = "BuyPrice", DataKey = false, Match = "", IsInsert = true)]
21         public decimal BuyPrice
22         {
23             get { return buyPrice; }
24             set { buyPrice = value; }
25         }
26         private DateTime buyDate;
27         [Column(FieldName = "BuyDate", DataKey = false, Match = "", IsInsert = true)]
28         public DateTime BuyDate
29         {
30             get { return buyDate; }
31             set { buyDate = value; }
32         }
33         private int flag;
34         [Column(FieldName = "Flag", DataKey = false, Match = "", IsInsert = true)]
35         public int Flag
36         {
37             get { return flag; }
38             set { flag = value; }
39         }
40     }
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
相关资源
相似解决方案