CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解
CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解
2. 指定更新的字段(updateFields)
扫一扫加作者微信
CSFramework.DB多数据库支持组件DbDataUpdate.UpdateObject详解
测试用 sys_AdminUser 模型:
C# Code:
//指定表名,比如MySQL所有表名默认是小写,Oracle全大写
//[TableInfoAttribute("sys_adminuser")]
//[TableInfoAttribute("sys_AdminUser")]
//[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
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");
//测试案例:修改对象,根据对象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
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" };//忽略的字段列表,比如自增字段、时间戳等。
string[] PKFields = new string[] { "isid" };//主键字段
string[] ignoreFields = new string[] { "isid", "Account" };//忽略的字段列表,比如自增字段、时间戳等。
//指定忽略更新的字段
bool ok1 = new DbDataUpdate(db).UpdateObject(user, PKFields, ignoreFields);
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参数可以不传值)
string[] PKFields = new string[] { "isid" };//主键字段
string[] updateFields = new string[] { "AccountName", "Amount" };//指定提交数据的字段(ignoreFields参数可以不传值)
//指定更新的字段
bool ok2 = new DbDataUpdate(db).UpdateObject(user, PKFields, null, updateFields);
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参数可以不传值)
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);
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
//来源:C/S框架网 | www.csframework.com | QQ:23404761
TableInfoAttribute ORM模型的特性定义:
C# Code:
/// <summary>
/// ORM模型的特性,用于指定该模型对应的表名
/// </summary>
public class TableInfoAttribute : Attribute
{
/// <summary>
/// 表名
/// </summary>
public string TableName { get; set; }
public TableInfoAttribute(string tableName)
{
this.TableName = tableName;
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// ORM模型的特性,用于指定该模型对应的表名
/// </summary>
public class TableInfoAttribute : Attribute
{
/// <summary>
/// 表名
/// </summary>
public string TableName { get; set; }
public TableInfoAttribute(string tableName)
{
this.TableName = tableName;
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
扫一扫加作者微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网