mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 修复 LazyLoading 依赖项目 CSScript.Core 升级的 bug;(以上都不再升级该依赖)
This commit is contained in:
parent
123ae07cfa
commit
2089a1f747
@ -140,7 +140,7 @@ namespace FreeSql
|
||||
isFirst = false;
|
||||
var itemType = item.GetType();
|
||||
if (itemType == typeof(object)) return;
|
||||
if (itemType.FullName.StartsWith("Submission#")) itemType = itemType.BaseType;
|
||||
if (itemType.FullName.Contains("FreeSqlLazyEntity__")) itemType = itemType.BaseType;
|
||||
if (Orm.CodeFirst.GetTableByEntity(itemType)?.Primarys.Any() != true) return;
|
||||
if (item is BaseEntity<TEntity> == false) return;
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ namespace FreeSql
|
||||
isFirst = false;
|
||||
var itemType = item.GetType();
|
||||
if (itemType == typeof(object)) return;
|
||||
if (itemType.FullName.StartsWith("Submission#")) itemType = itemType.BaseType;
|
||||
if (itemType.FullName.Contains("FreeSqlLazyEntity__")) itemType = itemType.BaseType;
|
||||
if (Orm.CodeFirst.GetTableByEntity(itemType)?.Primarys.Any() != true) return;
|
||||
if (item is BaseEntity<TEntity> == false) return;
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ namespace FreeSql
|
||||
if (item == null) return;
|
||||
var itemType = item.GetType();
|
||||
if (itemType == typeof(object)) return;
|
||||
if (itemType.FullName.StartsWith("Submission#")) itemType = itemType.BaseType;
|
||||
if (itemType.FullName.Contains("FreeSqlLazyEntity__")) itemType = itemType.BaseType;
|
||||
if (_db.Orm.CodeFirst.GetTableByEntity(itemType)?.Primarys.Any() != true) return;
|
||||
var dbset = _db.Set(itemType);
|
||||
dbset?.GetType().GetMethod("TrackToList", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(dbset, new object[] { list });
|
||||
|
@ -277,9 +277,9 @@ namespace FreeSql
|
||||
var isEquals = true;
|
||||
for (var midcolidx = tref.Columns.Count; midcolidx < tref.MiddleColumns.Count; midcolidx++)
|
||||
{
|
||||
var refcol = tref.Columns[midcolidx - tref.Columns.Count];
|
||||
var refcol = tref.RefColumns[midcolidx - tref.Columns.Count];
|
||||
var midval = FreeSql.Internal.Utils.GetDataReaderValue(refcol.CsType, _db.Orm.GetEntityValueWithPropertyName(tref.RefMiddleEntityType, midItem, tref.MiddleColumns[midcolidx].CsName));
|
||||
var refval = FreeSql.Internal.Utils.GetDataReaderValue(refcol.CsType, _db.Orm.GetEntityValueWithPropertyName(tref.RefEntityType, curList[curIdx], tref.Columns[midcolidx - tref.Columns.Count].CsName));
|
||||
var refval = FreeSql.Internal.Utils.GetDataReaderValue(refcol.CsType, _db.Orm.GetEntityValueWithPropertyName(tref.RefEntityType, curList[curIdx], refcol.CsName));
|
||||
if (object.Equals(midval, refval) == false)
|
||||
{
|
||||
isEquals = false;
|
||||
|
@ -16,6 +16,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.BaseEntity\FreeSql.Extensions.BaseEntity.csproj" />
|
||||
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.LazyLoading\FreeSql.Extensions.LazyLoading.csproj" />
|
||||
<ProjectReference Include="..\..\FreeSql.DbContext\FreeSql.DbContext.csproj" />
|
||||
<ProjectReference Include="..\..\Providers\FreeSql.Provider.MySql\FreeSql.Provider.MySql.csproj" />
|
||||
|
285
FreeSql.Tests/FreeSql.Tests.DbContext/USERINFO.cs
Normal file
285
FreeSql.Tests/FreeSql.Tests.DbContext/USERINFO.cs
Normal file
@ -0,0 +1,285 @@
|
||||
using FreeSql;
|
||||
using FreeSql.DataAnnotations;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
/// <summary>
|
||||
/// 员工信息表
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
[Index("员工代码badgenumber唯一", "badgenumber", true)]
|
||||
public class userinfo : BaseEntity<userinfo>
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工ID
|
||||
/// </summary>
|
||||
[Column(IsPrimary = true)]
|
||||
[System.ComponentModel.DisplayName("员工ID ")]
|
||||
[System.ComponentModel.DataAnnotations.Required()]
|
||||
public int userid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工号
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("工号")]
|
||||
[System.ComponentModel.DataAnnotations.Required()]
|
||||
[Column(Name = "BADGENUMBER", DbType = "VARCHAR(24)")]
|
||||
public String badgenumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 姓名
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("姓名")]
|
||||
[System.ComponentModel.DataAnnotations.Required()]
|
||||
[Column(DbType = "varchar(40) NULL")]
|
||||
|
||||
public String Name { get; set; }
|
||||
/// <summary>
|
||||
/// 身份证
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("身份证证")]
|
||||
[System.ComponentModel.DataAnnotations.Required()]
|
||||
public String IDCardNo { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 行动电话
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("行动电话")]
|
||||
[Column(DbType = "varchar(20) NULL")]
|
||||
public string pager { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 邮件地址
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("邮件地址 ")]
|
||||
public String email { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 办公电话
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("办公电话")]
|
||||
[Column(DbType = "varchar(20) NULL")]
|
||||
public String ophone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职时间
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("入职时间")]
|
||||
[Column(DbType = "date")]
|
||||
public DateTime? hiredday { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 生日
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("生日 ")]
|
||||
[Column(DbType = "date")]
|
||||
public DateTime? birthday { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 民族
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("民族")]
|
||||
public string minzu { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 籍贯
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("籍贯")]
|
||||
public String homeaddress { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 合同日期
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("合同日期")]
|
||||
[Column(DbType = "date")]
|
||||
public DateTime? hetongdate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 家庭地址
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("家庭地址")]
|
||||
[Column(DbType = "varchar(80) NULL")]
|
||||
public String street { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 邮编
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("邮编")]
|
||||
[Column(DbType = "varchar(12) NULL")]
|
||||
public String zip { get; set; }
|
||||
|
||||
[System.ComponentModel.DisplayName("城市")]
|
||||
[Column(Name = "CITY", DbType = "varchar(2)")]
|
||||
public string CITY { get; set; }
|
||||
|
||||
[System.ComponentModel.DisplayName("省份")]
|
||||
[Column(DbType = "varchar(2) NULL")]
|
||||
public string STATE { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 编号
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("编号")]
|
||||
|
||||
public string ssn { get; set; }
|
||||
|
||||
[Column(DbType = "varchar(8) NULL")]
|
||||
public string GENDER { get; set; } = "M";
|
||||
/// <summary>
|
||||
/// 职务
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("职务")]
|
||||
[Column(DbType = "varchar(20) NULL")]
|
||||
public string title { get; set; }
|
||||
|
||||
|
||||
public short? VERIFICATIONMETHOD { get; set; }//验证方式
|
||||
public short? DEFAULTDEPTID { get; set; } = 1;//所属部门ID号
|
||||
public short? ATT { get; set; } = 1;//考勤有效
|
||||
public short? INLATE { get; set; } = 1;//计迟到
|
||||
public short? OUTEARLY { get; set; } = 1;//计早退
|
||||
|
||||
public short? OVERTIME { get; set; }
|
||||
|
||||
public short? SEP { get; set; } = 1;
|
||||
public short HOLIDAY { get; set; } = 1;//假日休息
|
||||
public string PASSWORD { get; set; }//口令
|
||||
public short LUNCHDURATION { get; set; } = 1;//有午休
|
||||
public string MVerifyPass { get; set; }//考勤验证密码
|
||||
|
||||
//[Column(DbType = "image NULL")]
|
||||
//public byte[] PHOTO { get; set; }
|
||||
//[Column(DbType = "image NULL")]
|
||||
//public byte[] Notes { get; set; }
|
||||
|
||||
public int? VerifyCode { get; set; }
|
||||
public int? Expires { get; set; }
|
||||
public int? ValidCount { get; set; }
|
||||
public int? UseAccGroupTZ { get; set; }
|
||||
|
||||
public int? AccGroup { get; set; }
|
||||
public int? FaceGroup { get; set; }
|
||||
public int? EMPRIVILEGE { get; set; }
|
||||
public int? InheritDeptRule { get; set; }
|
||||
public int? RegisterOT { get; set; }
|
||||
public int? MinAutoSchInterval { get; set; }
|
||||
public int? AutoSchPlan { get; set; }
|
||||
public int? InheritDeptSchClass { get; set; }
|
||||
public int? InheritDeptSch { get; set; }
|
||||
public int? privilege { get; set; }
|
||||
public int? TimeZone1 { get; set; }
|
||||
public int? TimeZone2 { get; set; }
|
||||
public int? TimeZone3 { get; set; }
|
||||
|
||||
[Column(DbType = "date")]
|
||||
public DateTime? ValidTimeEnd { get; set; }
|
||||
[Column(DbType = "date")]
|
||||
public DateTime? ValidTimeBegin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 家庭电话
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("家庭电话")]
|
||||
[Column(DbType = "varchar(20) NULL")]
|
||||
public String fphone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 卡号
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("卡号 ")]
|
||||
[Column(Name = "CardNo", DbType = "varchar(20)")]
|
||||
public String CardNo { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 身份证有效期
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("身份证有效期 ")]
|
||||
public String idcardvalidtime { get; set; } = new DateTime(2099, 12, 31).ToString();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 离职日期
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("离职日期")]
|
||||
[Column(DbType = "date")]
|
||||
public DateTime? leavedate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 登录密码
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("登录密码")]
|
||||
public String loginpass { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 相片地址
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("相片地址")]
|
||||
public String picurl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 上级主管
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("上级主管")]
|
||||
public int? managerid { get; set; }
|
||||
///// <summary>
|
||||
///// 上级主管对象
|
||||
///// </summary>
|
||||
//[Navigate("managerid")]
|
||||
//public userinfo pManager { get; set; }
|
||||
|
||||
|
||||
|
||||
[Navigate(ManyToMany = typeof(dept_user))]
|
||||
public List<DEPARTMENTS> depts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 管理员标志
|
||||
/// </summary>
|
||||
|
||||
[System.ComponentModel.DisplayName("管理员标志")]
|
||||
public short? SECURITYFLAGS { get; set; }//管理员标志
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -21,6 +21,35 @@ namespace FreeSql.Tests
|
||||
[Fact]
|
||||
public void Include_ManyToMany()
|
||||
{
|
||||
g.sqlite.Delete<userinfo>().Where("1=1").ExecuteAffrows();
|
||||
g.sqlite.Delete<DEPARTMENTS>().Where("1=1").ExecuteAffrows();
|
||||
g.sqlite.Delete<dept_user>().Where("1=1").ExecuteAffrows();
|
||||
BaseEntity.Initialization(g.sqlite);
|
||||
|
||||
userinfo user = new userinfo { userid = 1 };
|
||||
user.Insert();
|
||||
|
||||
user.depts = new List<DEPARTMENTS>(
|
||||
new[] {
|
||||
new DEPARTMENTS { deptid = 1, deptcode = "01" },
|
||||
new DEPARTMENTS { deptid = 2, deptcode = "02" },
|
||||
new DEPARTMENTS { deptid = 3, deptcode = "03" },
|
||||
});
|
||||
user.SaveMany("depts");
|
||||
|
||||
user.depts = new List<DEPARTMENTS>(
|
||||
new[] {
|
||||
new DEPARTMENTS { deptid = 1, deptcode = "01" },
|
||||
new DEPARTMENTS { deptid = 2, deptcode = "02" },
|
||||
new DEPARTMENTS { deptid = 4, deptcode = "04" },
|
||||
});
|
||||
user.SaveMany("depts");
|
||||
|
||||
user.depts = new List<DEPARTMENTS>(
|
||||
new[] {
|
||||
new DEPARTMENTS { deptid = 2, deptcode = "02" },
|
||||
});
|
||||
user.SaveMany("depts");
|
||||
|
||||
g.sqlite.CodeFirst.SyncStructure<Song_tag>();
|
||||
g.sqlite.CodeFirst.SyncStructure<Tag>();
|
||||
|
96
FreeSql.Tests/FreeSql.Tests.DbContext/departments(1).cs
Normal file
96
FreeSql.Tests/FreeSql.Tests.DbContext/departments(1).cs
Normal file
@ -0,0 +1,96 @@
|
||||
using FreeSql;
|
||||
using FreeSql.DataAnnotations;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 部门表
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
[Index("部门代码deptcode唯一", "deptcode", true)]
|
||||
public class DEPARTMENTS : BaseEntity<DEPARTMENTS>
|
||||
{
|
||||
/// <summary>
|
||||
/// 部门ID
|
||||
/// </summary>
|
||||
[Column(IsPrimary = true)]
|
||||
|
||||
[System.ComponentModel.DisplayName("部门ID")]
|
||||
public int deptid { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 员工列表 对应employee.deptid
|
||||
///// </summary>
|
||||
//[Navigate("deptid")]
|
||||
//public List<employee> Employees { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 上级部门ID
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("上级部门ID")]
|
||||
public int? supdeptid { get; set; }
|
||||
/// <summary>
|
||||
/// 上级部门对象
|
||||
/// </summary>
|
||||
[Navigate("supdeptid")]
|
||||
public DEPARTMENTS pDepartments { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 部门主管ID
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("部门主管ID")]
|
||||
public int? managerid { get; set; }
|
||||
/// <summary>
|
||||
/// 部门主管对象
|
||||
/// </summary>
|
||||
[Navigate("managerid")]
|
||||
public userinfo manager { get; set; }
|
||||
|
||||
|
||||
///// <summary>
|
||||
///// 下级部门列表
|
||||
///// </summary>
|
||||
//[Navigate("supdeptid")]
|
||||
//public List<departments> childDepartments { get; set; }
|
||||
|
||||
|
||||
[Navigate(ManyToMany = typeof(dept_user))]
|
||||
public List<userinfo> employeesMany { get; set; }
|
||||
|
||||
|
||||
#region MyRegion
|
||||
/// <summary>
|
||||
/// 部门代码
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("部门代码")]
|
||||
[System.ComponentModel.DataAnnotations.Required()]
|
||||
public string deptcode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 部门名称
|
||||
/// </summary>
|
||||
[System.ComponentModel.DisplayName("部门名称")]
|
||||
[System.ComponentModel.DataAnnotations.Required()]
|
||||
public string deptname { get; set; }
|
||||
#endregion
|
||||
|
||||
public short? InheritParentSch { get; set; }
|
||||
public short? InheritDeptSch { get; set; }
|
||||
public short? InheritDeptSchClass { get; set; }
|
||||
public short? AutoSchPlan { get; set; }
|
||||
public short? InLate { get; set; }
|
||||
public short? OutEarly { get; set; }
|
||||
public short? InheritDeptRule { get; set; }
|
||||
public int? MinAutoSchInterval { get; set; }
|
||||
public short? RegisterOT { get; set; }
|
||||
public int? DefaultSchId { get; set; }
|
||||
public short? ATT { get; set; }
|
||||
public short? Holiday { get; set; }
|
||||
public short? OverTime { get; set; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
21
FreeSql.Tests/FreeSql.Tests.DbContext/dept_user.cs
Normal file
21
FreeSql.Tests/FreeSql.Tests.DbContext/dept_user.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql;
|
||||
|
||||
public class dept_user: BaseEntity<dept_user>
|
||||
{
|
||||
public int deptid { get; set; }
|
||||
public int userid { get; set; }
|
||||
|
||||
[Navigate("deptid")]
|
||||
public DEPARTMENTS dept { get; set; }
|
||||
|
||||
|
||||
[Navigate("userid")]
|
||||
public userinfo emp { get; set; }
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user