SqlSugar/OrmTest/UnitTest/Update.cs

129 lines
6.2 KiB
C#
Raw Normal View History

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;
}
}
}