2017-05-17 00:22:29 +08:00
using OrmTest.Models ;
using SqlSugar ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
namespace OrmTest.UnitTest
{
2017-05-19 15:21:24 +08:00
public class Update : UnitTestBase
2017-05-17 00:22:29 +08:00
{
private Update ( ) { }
public Update ( int eachCount )
{
this . Count = eachCount ;
}
public void Init ( )
{
var db = GetInstance ( ) ;
2017-05-22 02:14:28 +08:00
var updateObj = new Student ( ) { Id = 1 , Name = "jack" , SchoolId = 0 , CreateTime = Convert . ToDateTime ( "2017-05-21 09:56:12.610" ) } ;
var updateObjs = new List < Student > ( ) { updateObj , new Student ( ) { Id = 2 , Name = "sun" , SchoolId = 0 } } . ToArray ( ) ;
2017-05-17 00:22:29 +08:00
db . IgnoreColumns . Add ( "TestId" , "Student" ) ;
//db.MappingColumns.Add("id","dbid", "Student");
2017-05-21 11:16:11 +08:00
var t1 = db . Updateable ( updateObj ) . ToSql ( ) ;
base . Check ( @ "UPDATE [Student] SET
[SchoolId] = @SchoolId , [ Name ] = @Name , [ CreateTime ] = @CreateTime WHERE [ Id ] = @Id ", new List<SugarParameter>() {
new SugarParameter ( "@SchoolId" , 0 ) ,
new SugarParameter ( "@Id" , 1 ) ,
new SugarParameter ( "@CreateTime" , Convert . ToDateTime ( "2017-05-21 09:56:12.610" ) ) ,
new SugarParameter ( "@Name" , "jack" )
} , t1 . Key , t1 . Value , "Update t1 error" ) ;
2017-05-17 00:22:29 +08:00
2017-05-19 15:21:24 +08:00
//update reutrn Command Count
2017-05-21 11:16:11 +08:00
var t2 = db . Updateable ( updateObj ) . ExecuteCommand ( ) ;
2017-05-17 00:22:29 +08:00
db . IgnoreColumns = null ;
2017-05-19 15:21:24 +08:00
//Only update Name
2017-05-21 11:16:11 +08:00
var t3 = db . Updateable ( updateObj ) . UpdateColumns ( it = > new { it . Name } ) . ToSql ( ) ;
base . Check ( @ "UPDATE [Student] SET
[Name] = @Name WHERE [ Id ] = @Id ", new List<SugarParameter>() {
new SugarParameter ( "@Id" , 1 ) ,
new SugarParameter ( "@Name" , "jack" )
} , t3 . Key , t3 . Value , "Update t3 error" ) ;
2017-05-17 00:22:29 +08:00
//Ignore Name and TestId
2017-05-21 11:16:11 +08:00
var t4 = db . Updateable ( updateObj ) . IgnoreColumns ( it = > new { it . Name , it . TestId } ) . ToSql ( ) ;
base . Check ( @ "UPDATE [Student] SET
[SchoolId] = @SchoolId , [ CreateTime ] = @CreateTime WHERE [ Id ] = @Id ", new List<SugarParameter>() {
new SugarParameter ( "@CreateTime" , Convert . ToDateTime ( "2017-05-21 09:56:12.610" ) ) ,
new SugarParameter ( "@SchoolId" , 0 ) ,
new SugarParameter ( "@Id" , 1 ) ,
} , t4 . Key , t4 . Value , "Update t4 error" ) ;
2017-05-17 00:22:29 +08:00
//Ignore Name and TestId
2017-05-21 11:16:11 +08:00
var t5 = db . Updateable ( updateObj ) . IgnoreColumns ( it = > it = = "Name" | | it = = "TestId" ) . With ( SqlWith . UpdLock ) . ToSql ( ) ;
base . Check ( @ "UPDATE [Student] WITH(UPDLOCK) SET
[SchoolId] = @SchoolId , [ CreateTime ] = @CreateTime WHERE [ Id ] = @Id ", new List<SugarParameter>() {
new SugarParameter ( "@CreateTime" , Convert . ToDateTime ( "2017-05-21 09:56:12.610" ) ) ,
new SugarParameter ( "@SchoolId" , 0 ) ,
new SugarParameter ( "@Id" , 1 ) ,
} , t5 . Key , t5 . Value , "Update t5 error" ) ;
2017-05-17 00:22:29 +08:00
//Use Lock
2017-05-21 11:16:11 +08:00
var t6 = db . Updateable ( updateObj ) . With ( SqlWith . UpdLock ) . ToSql ( ) ;
base . Check ( @ "UPDATE [Student] WITH(UPDLOCK) SET
[SchoolId] = @SchoolId , [ Name ] = @Name , [ CreateTime ] = @CreateTime , [ TestId ] = @TestId WHERE [ Id ] = @Id ", new List<SugarParameter>() {
new SugarParameter ( "@SchoolId" , 0 ) ,
new SugarParameter ( "@Id" , 1 ) ,
new SugarParameter ( "@TestId" , 0 ) ,
new SugarParameter ( "@CreateTime" , Convert . ToDateTime ( "2017-05-21 09:56:12.610" ) ) ,
new SugarParameter ( "@Name" , "jack" )
} , t6 . Key , t6 . Value , "Update t6 error" ) ;
2017-05-17 00:22:29 +08:00
2017-05-19 15:21:24 +08:00
//update List<T>
2017-05-21 11:16:11 +08:00
var t7 = db . Updateable ( updateObjs ) . With ( SqlWith . UpdLock ) . ToSql ( ) ;
2017-05-21 11:29:02 +08:00
base . Check ( @ "UPDATE S SET S.[SchoolId]=T.[SchoolId],S.[Name]=T.[Name],S.[CreateTime]=T.[CreateTime],S.[TestId]=T.[TestId] FROM [Student] S WITH(UPDLOCK) INNER JOIN (
SELECT N '1' AS Id , N '0' AS SchoolId , N ' jack ' AS Name , ' 2017 - 05 - 21 09 : 56 : 12.610 ' AS CreateTime , N '0' AS TestId
UNION ALL
SELECT N '2' AS Id , N '0' AS SchoolId , N ' sun ' AS Name , ' 1900 - 01 - 01 12 : 00 : 00.000 ' AS CreateTime , N '0' AS TestId
) T ON S . [ Id ] = T . [ Id ]
GO ", null, t7.Key, null," Update t7 error ");
2017-05-19 15:21:24 +08:00
//Re Set Value
2017-05-21 11:29:02 +08:00
var t8 = db . Updateable ( updateObj )
2017-05-21 13:32:10 +08:00
. ReSetValue ( it = > it . Name = = ( it . Name + 1 ) ) . ToSql ( ) ;
2017-05-21 11:29:02 +08:00
base . Check ( @ "UPDATE [Student] SET
2017-05-21 13:32:10 +08:00
[SchoolId] = @SchoolId , [ Name ] = ( [ Name ] + @Const0 ) , [ CreateTime ] = @CreateTime , [ TestId ] = @TestId WHERE [ Id ] = @Id ",
2017-05-21 11:29:02 +08:00
new List < SugarParameter > ( ) {
new SugarParameter ( "@SchoolId" , 0 ) ,
new SugarParameter ( "@Id" , 1 ) ,
new SugarParameter ( "@TestId" , 0 ) ,
new SugarParameter ( "@CreateTime" , Convert . ToDateTime ( "2017-05-21 09:56:12.610" ) ) ,
2017-05-21 13:32:10 +08:00
new SugarParameter ( "@Const0" , 1 ) ,
new SugarParameter ( "@Name" , "jack" )
2017-05-21 11:29:02 +08:00
} , t8 . Key , t8 . Value , "Update t8 error"
) ;
2017-05-19 15:40:08 +08:00
//Where By Expression
2017-05-21 13:37:36 +08:00
var t9 = db . Updateable ( updateObj )
2017-05-19 15:40:08 +08:00
. Where ( it = > it . Id = = 1 ) . ToSql ( ) ;
2017-05-21 13:37:36 +08:00
base . Check ( @ "UPDATE [Student] SET
[SchoolId] = @SchoolId , [ Name ] = @Name , [ CreateTime ] = @CreateTime , [ TestId ] = @TestId WHERE ( [ Id ] = @Id0 ) ",
new List < SugarParameter > ( ) {
new SugarParameter ( "@SchoolId" , 0 ) ,
new SugarParameter ( "@Id" , 1 ) ,
new SugarParameter ( "@Id0" , 1 ) ,
new SugarParameter ( "@TestId" , 0 ) ,
new SugarParameter ( "@CreateTime" , Convert . ToDateTime ( "2017-05-21 09:56:12.610" ) ) ,
new SugarParameter ( "@Name" , "jack" ) } , t9 . Key , t9 . Value , "Upate t9 error"
) ;
2017-05-17 00:22:29 +08:00
}
public SqlSugarClient GetInstance ( )
{
SqlSugarClient db = new SqlSugarClient ( new SystemTablesConfig ( ) { ConnectionString = Config . ConnectionString , DbType = DbType . SqlServer , IsAutoCloseConnection = true } ) ;
return db ;
}
}
}