Go to my github

LiteORM学习一:EntityObject 设计

LiteORM项目地址:http://www.codeproject.com/KB/database/lite.aspx

ListORM 怎么设计Entity呢?

listorm 是利用微软自带的Attribute 来实现数据库与实体类的映射过程。

image

lmgorm是利用xml来实现数据库与实体类的映射过程。这个会在LmgORM系列会有详细的介绍的。

image

复制代码
using lite;
// maps to table dbo.person
[Table]
public class Person

// maps to table dbo.users
[Table(Name="users")]
public class User

// maps to table people.person
[Table(Schema="people")]
public class Person

// maps to view people.transactView
[Table(Name="transactView",Schema="people")]
public class Purchase
复制代码

属性

复制代码
// maps to [order_id]
[Column(Name="order_id")]
private int orderId;

// maps to [customer_id]
[Column(Name="customer_id")] // 这个用的比较多哦
public int CustomerId { get; set; }

// maps to [quantity]
[Column]
public int Quantity { get; set; }
复制代码

主键

[Column, ID, PK] //加入了 ID 属性 代表是自增长 列
protected int studentNumber;

[Column(Name
= "UserID", Alias = "id"), PK] // 加入了 PK代码是主键
private int _UserID;

完整实体映射代码:

     [Table(Name = "User")]

复制代码
    public class ListUser
    {
        [Column(Name 
= "UserID", Alias = "id"),ID, PK]
        
private int _UserID;

        [Column(Name 
= "UserName")]
        
private string _UserName;

        
public int UserID
        {
            
get { return _UserID; }
            
set { _UserID = value; }
        }
        
        
public string UserName
        {
            
get { return _UserName; }
            
set { _UserName = value; }
        }

        
#region
        
public override string ToString()
        {
            
string info = "UserID= " + UserID.ToString() + "  UserName=" + UserName;
            
return info;
        }
        
public int Add()
        {
            IDb db 
= DbFactory.Instance.GetDb();
            
int records = db.Insert(this);
            
return records;
        }
        
public void Update()
        {
            IDb db 
= DbFactory.Instance.GetDb();
            
int records = db.Update(this);
        }
        
public void Delete(string column)
        {
            IDb db 
= DbFactory.Instance.GetDb();
            IQuery q 
= db.Query();
            q.Constrain(column).Equal(
1);
            db.Delete(
this.GetType(), q);
        }
        
public ListUser Find(string id)
        {
            IDb db 
= DbFactory.Instance.GetDb();
            ListUser p2 
= (ListUser)db.Find(this.GetType(), id);
            
return p2;
        }
        
public System.Collections.IList Query()
        {
//查询
            IDb db = DbFactory.Instance.GetDb();
            IQuery q 
= db.Query();
            System.Collections.IList list 
= db.Select(this.GetType(), q);
            
return list;
        }
        
#endregion
    }
复制代码

内部实现

TableAttribute  表映射

ColumnAttribute 列映射

PKAttribute 主键映射

SPResultAttribute 存储过程或视图的映射

不知道理解的对不对。以后在完善。

posted @   峡谷少爷  阅读(1852)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示