自己写数据库访问ORM

 下面看一个例子:

现在有一个用户信息的表:E-R图如下:

要实现该表的数据库新增、修改、查询功能,需要实现下面两个业务类:

  1. using Csla; 
  2. using IF.CslaCore; 
  3. using IF.OrmCore.DataSchema; 
  4. using System; 
  5. using System.Collections.Generic; 
  6. using System.ComponentModel; 
  7. using System.Linq; 
  8. using System.Text; 
  9. using System.Threading.Tasks; 
  10.  
  11. namespace IF.SysUser.Business 
  12. { 
  13.     [Serializable] 
  14.     [TableClass(FriendlyName="用户信息表",TableName="SYS_USER")] 
  15.     public class SysUser : IfBusiness<SysUser> 
  16.     { 
  17.         private static readonly PropertyInfo<string> SUR_IDProperty = RegisterProperty<string>(c => c.SUR_ID); 
  18.  
  19.         [DisplayName("SUR_ID")] 
  20.         [FieldDescription(IsPrimaryKey=true,ColumnName="SUR_ID",FriendlyName="SUR_ID",NeedUpdate=true)] 
  21.         public string SUR_ID { get; set; } 
  22.  
  23.         private static readonly PropertyInfo<string> UserNameProperty = RegisterProperty<string>(c => c.UserName); 
  24.         [DisplayName("登录名")] 
  25.         [FieldDescription(ColumnName="SUR_USERNAME",FriendlyName="登录名",NeedUpdate=true)] 
  26.         public string UserName { get; set; } 
  27.  
  28.  
  29.         private static readonly PropertyInfo<string> NameProperty = RegisterProperty<string>(c => c.Name); 
  30.         [DisplayName("姓名")] 
  31.         [FieldDescription(ColumnName="SUR_NAME",FriendlyName="姓名",NeedUpdate=true)] 
  32.         public string Name { get; set; } 
  33.  
  34.         private static readonly PropertyInfo<string> PasswordProperty = RegisterProperty<string>(c => c.Password); 
  35.         [DisplayName("密码")] 
  36.         [FieldDescription(ColumnName="SUR_PASSWORD",FriendlyName="密码",NeedUpdate=true)] 
  37.         public string Password { get; set; } 
  38.  
  39.         private static readonly PropertyInfo<string> LoginMacProperty = RegisterProperty<string>(c => c.LoginMac); 
  40.         [DisplayName("登录Mac地址")] 
  41.         [FieldDescription(ColumnName="SUR_LOGIN_MAC",FriendlyName="登录Mac地址",NeedUpdate=true)] 
  42.         public string LoginMac { get; set; } 
  43.  
  44.         private static readonly PropertyInfo<string> LoginIPProperty = RegisterProperty<string>(c => c.LoginIP); 
  45.         [DisplayName("登录IP")] 
  46.         [FieldDescription(ColumnName="SUR_LOGIN_IP",FriendlyName="登录IP",NeedUpdate=true)] 
  47.         public string LoginIP { get; set; } 
  48.  
  49.  
  50.         private static readonly PropertyInfo<DateTime?> LoginTimeProperty = RegisterProperty<DateTime?>(c => c.LoginTime); 
  51.         [DisplayName("登录时间")] 
  52.         [FieldDescription(ColumnName="SUR_LOGIN_TIME",FriendlyName="登录时间",NeedUpdate=true)] 
  53.         public DateTime? LoginTime { get; set; } 
  54.  
  55.         private static readonly PropertyInfo<DateTime?> LogoutTimeProperty = RegisterProperty<DateTime?>(c => c.LogoutTime); 
  56.         [DisplayName("登出时间")] 
  57.         [FieldDescription(ColumnName="SUR_LOGOUT_TIME",FriendlyName="登出时间",NeedUpdate=true)] 
  58.         public DateTime? LogoutTime { get; set; } 
  59.  
  60.         private static readonly PropertyInfo<DateTime?> LoginFailTimeProperty = RegisterProperty<DateTime?>(c => c.LoginFailTime); 
  61.         [DisplayName("登录失败时间")] 
  62.         [FieldDescription(ColumnName="SUR_LOGIN_FAIL_TIME",FriendlyName="登录失败时间",NeedUpdate=true)] 
  63.         public DateTime? LoginFailTime { get; set; } 
  64.  
  65.         private static readonly PropertyInfo<Int32?> LoginFailCountProperty = RegisterProperty<Int32?>(c => c.LoginFailCount); 
  66.         [DisplayName("登录失败次数")] 
  67.         [FieldDescription(ColumnName="SUR_LOGIN_FAIL_COUNT",FriendlyName="登录失败次数",NeedUpdate=true)] 
  68.         public Int32? LoginFailCount { get; set; } 
  69.  
  70.  
  71.         private static readonly PropertyInfo<bool?> LockFGProperty = RegisterProperty<bool?>(c => c.LockFG); 
  72.         [DisplayName("是否锁定")] 
  73.         [FieldDescription(ColumnName="SUR_LOCK_FG",FriendlyName="是否锁定",NeedUpdate=true)] 
  74.         public bool? LockFG { get; set; } 
  75.  
  76.         private static readonly PropertyInfo<bool?> DisableFGProperty = RegisterProperty<bool?>(c => c.DisableFG); 
  77.         [DisplayName("是否有效")] 
  78.         [FieldDescription(ColumnName="SUR_DISABLE_FG",FriendlyName="是否有效",NeedUpdate=true)] 
  79.         public bool? DisableFG { get; set; } 
  80.  
  81.  
  82.         #region 通用字段 
  83.  
  84.         private static readonly PropertyInfo<DateTime?> CreateTimeProperty = RegisterProperty<DateTime?>(c => c.CreateTime); 
  85.         [DisplayName("创建时间")] 
  86.         [FieldDescription(ColumnName="CreateTime",FriendlyName="创建时间",NeedUpdate=true)] 
  87.         public override DateTime? CreateTime { get; set; } 
  88.  
  89.         private static readonly PropertyInfo<DateTime?> LastUpdateTimeProperty = RegisterProperty<DateTime?>(c => c.LastUpdateTime); 
  90.         [DisplayName("***修改时间")] 
  91.         [FieldDescription(ColumnName="LastUpdateTime",FriendlyName="***修改时间",NeedUpdate=true)] 
  92.         public override DateTime? LastUpdateTime { get; set; } 
  93.  
  94.  
  95.  
  96.         public override void SetPrimaryKey(string key) 
  97.         { 
  98.             SUR_ID = key; 
  99.         } 
  100.         #endregion 
  101.     } 
  102.  
  103.     [Serializable] 
  104.     public class SysUserList : IfBusinessList<SysUserList, SysUser> 
  105.     { } 
  106. } 

现在就可以工作了:

全表检索数据方法:

  1. SysUserList selData = SysUserList.Fetch(); 

向数据库新增一条数据:

  1. SysUser.Business.SysUser user = new SysUser.Business.SysUser(); 
  2. user.UserName= "inaction"; 
  3. user.Name = "流砂"; 
  4. user.Password= "superman"; 
  5. selData.Add(user); 
  6. selData.Save(); 

向数据库修改数据:

  1. var user = SysUserList.Fetch(c => c.UserName == "inaction"); 
  2. user.Password = "123456"; 
  3.  SysUserList list = new SysUserList { user }; 
  4.  list.Save(); 

以上代码就实现了对密码的修改。

特别说明:目前IF 只能通过SysUserList对象的Save方法保存数据。以后会实现通过业务类自身Save方法保存数据。

原文链接:http://www.cnblogs.com/nactioncsla/p/3439820.html

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/267267.html<

赞 (0)
管理的头像管理
上一篇2025-05-06 08:24
下一篇 2025-05-06 08:25

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注