mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-24 18:04:52 +08:00
82 lines
3.1 KiB
C#
82 lines
3.1 KiB
C#
![]() |
using SqlSugar;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace OrmTest
|
|||
|
{
|
|||
|
internal class UintOneToOneDto
|
|||
|
{
|
|||
|
public static void Init()
|
|||
|
{
|
|||
|
var db = NewUnitTest.Db;
|
|||
|
db.CurrentConnectionConfig.ConfigureExternalServices = new ConfigureExternalServices()
|
|||
|
{
|
|||
|
EntityService = (s, y) =>
|
|||
|
{
|
|||
|
if (y.IsPrimarykey != true && y.IsIdentity != true)
|
|||
|
{
|
|||
|
y.IsNullable = true;
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
//生成表
|
|||
|
db.CodeFirst.SetStringDefaultLength(50).InitTables<SysUser>();
|
|||
|
db.CodeFirst.SetStringDefaultLength(50).InitTables<SignInRecord>();
|
|||
|
db.DbMaintenance.TruncateTable<SysUser, SignInRecord>();
|
|||
|
//生成数据
|
|||
|
SysUser sysuser = new SysUser()
|
|||
|
{
|
|||
|
Id = 1,
|
|||
|
RealName = "Test",
|
|||
|
Age = 20,
|
|||
|
Phone = "1311111111",
|
|||
|
IdCardNum = "1111",
|
|||
|
Nation = "中国"
|
|||
|
};
|
|||
|
|
|||
|
SignInRecord signInRecord = new SignInRecord()
|
|||
|
{
|
|||
|
UserId = 1,
|
|||
|
SignInDate = (DateTime.Now),
|
|||
|
MorningSignInTime = DateTime.Now,
|
|||
|
MorningSignInAddress = "Addr",
|
|||
|
MorningSignInResult = SignInResultEnum.SignedIn,
|
|||
|
AfternoonSignInTime = DateTime.Now,
|
|||
|
AfternoonSignInAddress = "Addr",
|
|||
|
AfternoonSignInResult = SignInResultEnum.Late,
|
|||
|
};
|
|||
|
|
|||
|
db.DbMaintenance.TruncateTable<SysUser>();
|
|||
|
db.DbMaintenance.TruncateTable<SignInRecord>();
|
|||
|
db.Insertable(sysuser).ExecuteCommand();
|
|||
|
db.Insertable(signInRecord).ExecuteCommand();
|
|||
|
|
|||
|
//查询测试
|
|||
|
var query = db.Queryable<SignInRecord>()
|
|||
|
//**** Bug1, 当有x => x.sysUser.ToList(it => 时,同时使用Select的话,sysUser不会赋值。去掉Select则可以。
|
|||
|
|
|||
|
// .Includes<SysUser>(x => x.sysUser)
|
|||
|
.Includes<SysUser>(x => x.sysUser.ToList(it=>new SysUser() { Nation=it.Nation }))
|
|||
|
.GroupBy(g => new { g.UserId })
|
|||
|
.Select(it => new SignInRecordOutput
|
|||
|
{
|
|||
|
UserId = it.UserId,
|
|||
|
sysUser = it.sysUser,
|
|||
|
|
|||
|
SignInCount = SqlFunc.AggregateCount(SqlFunc.IF(it.MorningSignInResult == SignInResultEnum.SignedIn || it.AfternoonSignInResult == SignInResultEnum.SignedIn).Return(1).End<int>()),
|
|||
|
LateCount = SqlFunc.AggregateCount(SqlFunc.IF(it.MorningSignInResult == SignInResultEnum.Late || it.AfternoonSignInResult == SignInResultEnum.Late).Return(1).End<int>()),
|
|||
|
LeaveCount = SqlFunc.AggregateCount(SqlFunc.IF(it.MorningSignInResult == SignInResultEnum.Leave || it.AfternoonSignInResult == SignInResultEnum.Leave).Return(1).End<int>()),
|
|||
|
}) .ToList();
|
|||
|
|
|||
|
if (query.First().sysUser == null)
|
|||
|
{
|
|||
|
throw new Exception("unit error");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|