SqlSugar/Src/Asp.Net/SqlServerTest/Demos/F_VersionValidation.cs

120 lines
3.6 KiB
C#
Raw Normal View History

2018-10-13 03:31:18 +08:00
using OrmTest.Demo;
using OrmTest.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OrmTest.Demo
{
public class VersionValidation : DemoBase
{
public static void Init()
2018-10-13 05:55:04 +08:00
{
2018-10-13 06:05:56 +08:00
TimestampDemo();
DateTimeDemo();
2018-10-13 05:55:04 +08:00
}
2018-10-13 06:05:56 +08:00
private static void TimestampDemo()
2018-10-13 03:31:18 +08:00
{
var db = GetInstance();
try
{
2018-10-13 05:44:02 +08:00
var data = new StudentVersion()
2018-10-13 03:31:18 +08:00
{
2018-10-13 05:44:02 +08:00
Id = db.Queryable<Student>().Select(it => it.Id).First(),
CreateTime = DateTime.Now,
Name = "",
};
db.Updateable(data).IgnoreColumns(it => new { it.Timestamp }).ExecuteCommand();
var time = db.Queryable<StudentVersion>().Where(it => it.Id == data.Id).Select(it => it.Timestamp).Single();
data.Timestamp = time;
//is ok
db.Updateable(data).IsEnableUpdateVersionValidation().IgnoreColumns(it => new { it.Timestamp }).ExecuteCommand();
//updated Timestamp change
//is error
db.Updateable(data).IsEnableUpdateVersionValidation().IgnoreColumns(it => new { it.Timestamp }).ExecuteCommand();
//IsEnableUpdateVersionValidation Types of support int or long or byte[](Timestamp) or Datetime
2018-10-13 03:31:18 +08:00
}
catch (Exception ex)
{
if (ex is SqlSugar.VersionExceptions)
{
Console.Write(ex.Message);
}
2018-10-13 05:44:02 +08:00
else
{
2018-10-13 03:31:18 +08:00
}
}
}
2018-10-13 06:05:56 +08:00
private static void DateTimeDemo()
2018-10-13 05:55:04 +08:00
{
var db = GetInstance();
try
{
var data = new StudentVersion2()
{
Id = db.Queryable<Student>().Select(it => it.Id).First(),
CreateTime = DateTime.Now,
Name = "",
};
db.Updateable(data).ExecuteCommand();
var time = db.Queryable<StudentVersion2>().Where(it => it.Id == data.Id).Select(it => it.CreateTime).Single();
data.CreateTime = time;
//is ok
db.Updateable(data).IsEnableUpdateVersionValidation().ExecuteCommand();
data.CreateTime = time.AddMilliseconds(-1);
//is error
db.Updateable(data).IsEnableUpdateVersionValidation().ExecuteCommand();
//IsEnableUpdateVersionValidation Types of support int or long or byte[](Timestamp) or Datetime
}
catch (Exception ex)
{
if (ex is SqlSugar.VersionExceptions)
{
Console.Write(ex.Message);
}
else
{
}
}
}
2018-10-13 05:44:02 +08:00
[SqlSugar.SugarTable("Student")]
2018-10-13 03:31:18 +08:00
public class StudentVersion
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime CreateTime { get; set; }
2018-10-13 05:44:02 +08:00
[SqlSugar.SugarColumn(IsEnableUpdateVersionValidation = true,IsOnlyIgnoreInsert=true)]
public byte[] Timestamp { get; set; }
2018-10-13 03:31:18 +08:00
}
2018-10-13 05:55:04 +08:00
[SqlSugar.SugarTable("Student")]
public class StudentVersion2
{
public int Id { get; set; }
public string Name { get; set; }
[SqlSugar.SugarColumn(IsEnableUpdateVersionValidation = true, IsOnlyIgnoreInsert = true)]
public DateTime CreateTime { get; set; }
}
2018-10-13 03:31:18 +08:00
}
}