mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-18 20:08:15 +08:00
- 增加 表达式树函数解析 byte[] Length;#505
This commit is contained in:
@ -24,6 +24,86 @@
|
||||
支付Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.ClassId">
|
||||
<summary>
|
||||
班期标识-BodyScheduleEntity班期主键
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.Name">
|
||||
<summary>
|
||||
姓名
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.Birthday">
|
||||
<summary>
|
||||
出生日期
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.IdCard">
|
||||
<summary>
|
||||
身份证
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.TelPhone">
|
||||
<summary>
|
||||
联系电话
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.SchoolName">
|
||||
<summary>
|
||||
学校名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.StuCCNL">
|
||||
<summary>
|
||||
初潮年龄
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.Address">
|
||||
<summary>
|
||||
联系地址
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.CheckUserId">
|
||||
<summary>
|
||||
审核人标识
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.CheckUserName">
|
||||
<summary>
|
||||
审核人
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.CheckTime">
|
||||
<summary>
|
||||
审核时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.RefuseReason">
|
||||
<summary>
|
||||
拒绝原因
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.CollectionDate">
|
||||
<summary>
|
||||
采集时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.AttachmentId">
|
||||
<summary>
|
||||
附件标识(多附件)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.Sex">
|
||||
<summary>
|
||||
性别
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:FreeSql.Tests.Issues._507.BodyAuditEntity.ClassInfo">
|
||||
<summary>
|
||||
班期信息
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:FreeSql.Tests.MySql.MySqlCodeFirstTest.Tb_alltype.Save">
|
||||
<summary>
|
||||
保存或添加,如果主键有值则尝试 Update,如果影响的行为 0 则尝试 Insert
|
||||
|
52
FreeSql.Tests/FreeSql.Tests/Issues/505.cs
Normal file
52
FreeSql.Tests/FreeSql.Tests/Issues/505.cs
Normal file
@ -0,0 +1,52 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.Issues
|
||||
{
|
||||
public class _505
|
||||
{
|
||||
[Fact]
|
||||
public void ByteLengthTest()
|
||||
{
|
||||
TestLocal(g.sqlserver);
|
||||
TestLocal(g.mysql);
|
||||
TestLocal(g.pgsql);
|
||||
TestLocal(g.oracle);
|
||||
TestLocal(g.sqlite);
|
||||
TestLocal(g.firebird);
|
||||
TestLocal(g.dameng);
|
||||
//TestLocal(g.kingbaseES); //
|
||||
//TestLocal(g.shentong); // OCTET_LENGTH(xx) 返回结果32,值不符合
|
||||
//TestLocal(g.msaccess); //lenb(xx) 返回结果 15,值不符合
|
||||
|
||||
void TestLocal(IFreeSql fsql)
|
||||
{
|
||||
var byteArray = Encoding.UTF8.GetBytes("我是中国人");
|
||||
fsql.Delete<Model505>().Where("1=1").ExecuteAffrows();
|
||||
fsql.Insert(new Model505 { ByteLength = byteArray.Length, ByteArray = byteArray }).ExecuteAffrows();
|
||||
|
||||
var item = fsql.Select<Model505>()
|
||||
//.Where(x => x.ByteArray.Length == x.ByteLength)
|
||||
.First(a => new { item = a, length = a.ByteArray.Length });
|
||||
|
||||
Assert.NotNull(item);
|
||||
Assert.Equal(Encoding.UTF8.GetString(byteArray), Encoding.UTF8.GetString(item.item.ByteArray));
|
||||
Assert.Equal(byteArray.Length, item.item.ByteLength);
|
||||
Assert.Equal(byteArray.Length, item.length);
|
||||
}
|
||||
}
|
||||
public class Model505
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public byte[] ByteArray { get; set; }
|
||||
public int ByteLength { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
163
FreeSql.Tests/FreeSql.Tests/Issues/507.cs
Normal file
163
FreeSql.Tests/FreeSql.Tests/Issues/507.cs
Normal file
@ -0,0 +1,163 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.Issues
|
||||
{
|
||||
public class _507
|
||||
{
|
||||
[Fact]
|
||||
public void SelectTest()
|
||||
{
|
||||
var fsql = g.sqlite;
|
||||
var _bodyAuditRepository = fsql.GetRepository<BodyAuditEntity>();
|
||||
|
||||
var sql = _bodyAuditRepository.Select
|
||||
.Include(a => a.ClassInfo)
|
||||
.Count(out var total)
|
||||
.OrderBy(true, a => a.ClassInfo.period)
|
||||
.OrderBy(true, a => a.ClassInfo.className)
|
||||
.Page(2, 10)
|
||||
.ToList();
|
||||
}
|
||||
public class BodyAuditEntity
|
||||
{
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 班期标识-BodyScheduleEntity班期主键
|
||||
/// </summary>
|
||||
[Column(Name = "ClassId", StringLength = 70, Position = 2)]
|
||||
public string ClassId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 姓名
|
||||
/// </summary>
|
||||
[Column(Name = "Name", StringLength = 20, Position = 3)]
|
||||
public string Name { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 出生日期
|
||||
/// </summary>
|
||||
[Column(Name = "Birthday", StringLength = 20, Position = 5)]
|
||||
public string Birthday { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 身份证
|
||||
/// </summary>
|
||||
[Column(Name = "IdCard", StringLength = 20, Position = 6)]
|
||||
public string IdCard { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 联系电话
|
||||
/// </summary>
|
||||
[Column(Name = "TelPhone", StringLength = 15, Position = 7)]
|
||||
public string TelPhone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学校名称
|
||||
/// </summary>
|
||||
[Column(Name = "SchoolName", StringLength = 50, Position = 8)]
|
||||
public string SchoolName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 初潮年龄
|
||||
/// </summary>
|
||||
[Column(Name = "StuCCNL", StringLength = 20, Position = 9)]
|
||||
public int? StuCCNL { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 联系地址
|
||||
/// </summary>
|
||||
[Column(Name = "Address", StringLength = 100, Position = 10)]
|
||||
public string Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核人标识
|
||||
/// </summary>
|
||||
[Column(Name = "CheckUserId", StringLength = 70)]
|
||||
public string CheckUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核人
|
||||
/// </summary>
|
||||
[Column(Name = "CheckUserName", StringLength = 20)]
|
||||
public string CheckUserName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核时间
|
||||
/// </summary>
|
||||
[Column(Name = "CheckTime")]
|
||||
public DateTime? CheckTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 拒绝原因
|
||||
/// </summary>
|
||||
[Column(Name = "RefuseReason", StringLength = 100)]
|
||||
public string RefuseReason { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 采集时间
|
||||
/// </summary>
|
||||
[Column(Name = "CollectionDate")]
|
||||
public DateTime? CollectionDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 附件标识(多附件)
|
||||
/// </summary>
|
||||
[Column(Name = "AttachmentId", StringLength = 500)]
|
||||
public string AttachmentId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 性别
|
||||
/// </summary>
|
||||
[Column(Name = "Sex", StringLength = 2, Position = 4)]
|
||||
public string Sex { get; set; }
|
||||
|
||||
#region 导航属性
|
||||
/// <summary>
|
||||
/// 班期信息
|
||||
/// </summary>
|
||||
[Navigate(nameof(ClassId))]
|
||||
public virtual BodyScheduleEntity ClassInfo { get; set; }
|
||||
#endregion
|
||||
}
|
||||
public class BodyScheduleEntity
|
||||
{
|
||||
public string Id { get; set; }
|
||||
|
||||
[Column(Name = "period")]
|
||||
public int? period { get; set; }
|
||||
|
||||
[Column(Name = "maxQuota")]
|
||||
public int? maxQuota { get; set; }
|
||||
|
||||
[Column(Name = "allDays")]
|
||||
public int? allDays { get; set; }
|
||||
|
||||
[Column(Name = "schoolId", StringLength = 64)]
|
||||
public string bodySchoolId { get; set; }
|
||||
|
||||
[Column(Name = "ownership", StringLength = 64)]
|
||||
public string ownership { get; set; }
|
||||
|
||||
|
||||
[Column(Name = "className", StringLength = 20)]
|
||||
public string className { get; set; }
|
||||
|
||||
[Column(Name = "sex", StringLength = 10)]
|
||||
public string sex { get; set; }
|
||||
|
||||
[Column(Name = "classType", StringLength = 20)]
|
||||
public string classType { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user