CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解
作者:作者不详  发布日期:2021/07/13 19:42:01
  CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解

CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解


CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解


测试用 sys_AdminUser 模型:


C# Code:

//指定表名,比如MySQL所有表名默认是小写,Oracle全大写
//[TableInfoAttribute("sys_adminuser")]
//[TableInfoAttribute("sys_AdminUser")]
[TableInfoAttribute("SYS_ADMINUSER")]
public class sys_AdminUser
{
  
public int isid { get; set; }
  
  
public string AccountType { get; set; }
  
  
public string Account { get; set; }
  
  
public string AccountName { get; set; }
  
  
public string Password { get; set; }
  
  
public string FlagLock { get; set; }
  
  
public DateTime LastLoginTime { get; set; }
  
  
public int LoginCount { get; set; }
  
  
public decimal Amount { get; set; }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761




从数据库查询一条用户数据并存储到user对象:


C# Code:

//
//测试案例:修改对象,根据对象ORM自动存储到数据库
//
string conn = "Data Source=127.0.0.1;Initial Catalog=CSFramework_License;User ID=sa;Password =test;Persist Security Info=True;Connect Timeout=15;";
IDatabase db
= DatabaseFactory.CreateDatabase(DatabaseType.SqlServer, conn);

//从数据库获取对象,最新数据
sys_AdminUser user = db.ExecuteReader<sys_AdminUser>("SELECT * FROM sys_AdminUser where isid=49");

//修改数据
user.AccountName
= "修改用户名称";
user.LoginCount
= 111999;
user.Amount
= decimal.Parse("111999.99");


//来源:C/S框架网 | www.csframework.com | QQ:23404761




测试案例(三种测试场景):


1. 指定忽略更新的字段(ignoreFields


C# Code:

string[] PKFields = new string[] { "isid" };//主键字段
string[] ignoreFields = new string[] { "isid""Account" };//忽略的字段列表,比如自增字段、时间戳等。

//指定忽略更新的字段
bool ok1 = new DbDataUpdate(db).UpdateObject(user, PKFields, ignoreFields);




生成的SQL:


SQL Code:

UPDATE SYS_ADMINUSER SET AccountType=@AccountType,AccountName=@AccountName,Password=@Password,FlagLock=@FlagLock,LastLoginTime=@LastLoginTime,LoginCount=@LoginCount,Amount=@Amount WHERE isid=@isid




2. 指定更新的字段(updateFields)


C# Code:

string[] PKFields = new string[] { "isid" };//主键字段
string[] updateFields = new string[] { "AccountName""Amount" };//指定提交数据的字段(ignoreFields参数可以不传值)

//指定更新的字段
bool ok2 = new DbDataUpdate(db).UpdateObject(user, PKFields, null, updateFields);





生成的SQL:



SQL Code:

UPDATE SYS_ADMINUSER SET AccountName=@AccountName,Amount=@Amount WHERE isid=@isid





3. 指定忽略更新+更新的字段,此方案ignoreFields参数无效(程序不处理)


C# Code:

string[] PKFields = new string[] { "isid" };//主键字段
string[] ignoreFields = new string[] { "isid""Account" };//忽略的字段列表,比如自增字段、时间戳等。
string[] updateFields = new string[] { "AccountName""Amount" };//指定提交数据的字段(ignoreFields参数可以不传值)

//指定忽略更新+更新的字段,此方案ignoreFields参数无效(程序不处理)
bool ok3 = new DbDataUpdate(db).UpdateObject(user, PKFields, ignoreFields, updateFields);




生成的SQL:


SQL Code:

UPDATE SYS_ADMINUSER SET AccountName=@AccountName,Amount=@Amount WHERE isid=@isid

//来源:C/S框架网 | www.csframework.com | QQ:23404761




TableInfoAttribute ORM模型的特性定义:


C# Code:

/// <summary>
/// ORM模型的特性,用于指定该模型对应的表名
/// </summary>
public class TableInfoAttribute : Attribute
{
  
/// <summary>
  
/// 表名
  
/// </summary>
  
 public string TableName { getset; }
  
  
public TableInfoAttribute(string tableName)
  {
    
this.TableName = tableName;
  }
  
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761






C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

上一篇 下一篇