mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	- 增加 Navigate 属性未设置 set 时的友好错误提示;
- 增加 延时属性重写类对 protected set 的支持;
This commit is contained in:
		@@ -49,6 +49,9 @@ namespace base_entity
 | 
				
			|||||||
            BaseEntity.Initialization(fsql);
 | 
					            BaseEntity.Initialization(fsql);
 | 
				
			||||||
            #endregion
 | 
					            #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var test01 = EMSServerModel.Model.User.Select.IncludeMany(a => a.Roles).ToList();
 | 
				
			||||||
 | 
					            var test01tb = EMSServerModel.Model.User.Orm.CodeFirst.GetTableByEntity(typeof(EMSServerModel.Model.User));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var us = User1.Select.Limit(10).ToList();
 | 
					            var us = User1.Select.Limit(10).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            new Products { title = "product-1" }.Save();
 | 
					            new Products { title = "product-1" }.Save();
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										52
									
								
								Examples/base_entity/Test01/Role.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Examples/base_entity/Test01/Role.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using Newtonsoft.Json;
 | 
				
			||||||
 | 
					using FreeSql.DataAnnotations;
 | 
				
			||||||
 | 
					using FreeSql;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace EMSServerModel.Model
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// <20><>ɫ<EFBFBD><C9AB>
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						[JsonObject(MemberSerialization.OptIn)]
 | 
				
			||||||
 | 
						public partial class Role : BaseEntity<Role>{
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(IsPrimary = true, IsIdentity = true)]
 | 
				
			||||||
 | 
							public long RoleId { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string RoleName { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string RoleDesc { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							///// <summary>
 | 
				
			||||||
 | 
							///// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
 | 
				
			||||||
 | 
							///// </summary>
 | 
				
			||||||
 | 
							//[JsonProperty, Column(DbType = "date")]
 | 
				
			||||||
 | 
							//public DateTime CreateTime { get; set; } = DateTime.Now;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20><><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty]
 | 
				
			||||||
 | 
							public bool IsEnable { get; set; } = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20><>ɫ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>Զർ<D4B6><E0B5BC>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[Navigate(ManyToMany = typeof(UserRole))]
 | 
				
			||||||
 | 
							public virtual ICollection<User> Users { get; protected set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										154
									
								
								Examples/base_entity/Test01/User.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								Examples/base_entity/Test01/User.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,154 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using Newtonsoft.Json;
 | 
				
			||||||
 | 
					using FreeSql.DataAnnotations;
 | 
				
			||||||
 | 
					using System.ComponentModel.DataAnnotations;
 | 
				
			||||||
 | 
					using FreeSql;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace EMSServerModel.Model
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// 用户表
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						[JsonObject(MemberSerialization.OptIn)]
 | 
				
			||||||
 | 
						public partial class User : BaseEntity<User, long>{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							//[JsonProperty, Column(IsIdentity = true)]
 | 
				
			||||||
 | 
							//public long Id { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 编号
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)", IsPrimary = true)]
 | 
				
			||||||
 | 
							public string UserId { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 头像
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string Avatar { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 姓名
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string UserName { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 艺名
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string NickName { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 电话
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string Tel { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 性别
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty]
 | 
				
			||||||
 | 
							public Sex Sex { get; set; } = Sex.男;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 证件号
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string UID { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 生日
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "date")]
 | 
				
			||||||
 | 
							public DateTime? DateOfBirth { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 出生地
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string PlaceOfBirth { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 居住地
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string Addr { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 密码
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string Pwd { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 部门编号
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty]
 | 
				
			||||||
 | 
							public long? DeptId { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 职务编号
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty]
 | 
				
			||||||
 | 
							public long? TitleId { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							///// <summary>
 | 
				
			||||||
 | 
							///// 创建时间
 | 
				
			||||||
 | 
							///// </summary>
 | 
				
			||||||
 | 
							//[JsonProperty, Column(DbType = "date")]
 | 
				
			||||||
 | 
							//public DateTime CreateTime { get; set; } = DateTime.Now;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 国籍
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string Nationality { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 经手人
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string Handler { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 启用
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty]
 | 
				
			||||||
 | 
							public bool IsEnable { get; set; } = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 备注
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(100)")]
 | 
				
			||||||
 | 
							public string Memos { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[Navigate(ManyToMany = typeof(UserRole))]
 | 
				
			||||||
 | 
							public virtual ICollection<Role> Roles { get; protected set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// 性别枚举
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						public enum Sex
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 女=0
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							女=0,
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// 男=1
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							男=1
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										36
									
								
								Examples/base_entity/Test01/UserRole.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Examples/base_entity/Test01/UserRole.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					using Newtonsoft.Json;
 | 
				
			||||||
 | 
					using FreeSql.DataAnnotations;
 | 
				
			||||||
 | 
					using FreeSql;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace EMSServerModel.Model
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// <20>û<EFBFBD><C3BB><EFBFBD>ɫ<EFBFBD><C9AB>ϵ<EFBFBD><CFB5>
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
 | 
						[JsonObject(MemberSerialization.OptIn)]
 | 
				
			||||||
 | 
						public partial class UserRole : BaseEntity<UserRole>{
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty]
 | 
				
			||||||
 | 
							public long RoleId { get; set; }
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[Navigate("RoleId")]
 | 
				
			||||||
 | 
							public Role Roles { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[JsonProperty, Column(DbType = "varchar(50)")]
 | 
				
			||||||
 | 
							public string UserId { get; set; }
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							[Navigate("UserId")]
 | 
				
			||||||
 | 
							public User Users { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -29,5 +29,170 @@
 | 
				
			|||||||
            描述
 | 
					            描述
 | 
				
			||||||
            </summary>
 | 
					            </summary>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="T:EMSServerModel.Model.Role">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            角色表
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.Role.RoleId">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            角色编号
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.Role.RoleName">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            角色名称
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.Role.RoleDesc">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            角色描述
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.Role.IsEnable">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            启用
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.Role.Users">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            角色用户多对多导航
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="T:EMSServerModel.Model.User">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            用户表
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.UserId">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            编号
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Avatar">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            头像
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.UserName">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            姓名
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.NickName">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            艺名
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Tel">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            电话
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Sex">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            性别
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.UID">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            证件号
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.DateOfBirth">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            生日
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.PlaceOfBirth">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            出生地
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Addr">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            居住地
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Pwd">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            密码
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.DeptId">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            部门编号
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.TitleId">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            职务编号
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Nationality">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            国籍
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Handler">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            经手人
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.IsEnable">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            启用
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Memos">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            备注
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.User.Roles">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="T:EMSServerModel.Model.Sex">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            性别枚举
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="F:EMSServerModel.Model.Sex.女">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            女=0
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="F:EMSServerModel.Model.Sex.男">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            男=1
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="T:EMSServerModel.Model.UserRole">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            用户角色关系表
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.UserRole.RoleId">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            角色编号
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.UserRole.Roles">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            角色导航
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.UserRole.UserId">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            用户编号
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="P:EMSServerModel.Model.UserRole.Users">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            用户导航
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
    </members>
 | 
					    </members>
 | 
				
			||||||
</doc>
 | 
					</doc>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,7 +66,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                trytb.DbOldName = trytb.DbOldName?.ToUpper();
 | 
					                trytb.DbOldName = trytb.DbOldName?.ToUpper();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (tbattr != null) trytb.DisableSyncStructure = tbattr.DisableSyncStructure;
 | 
					            if (tbattr != null) trytb.DisableSyncStructure = tbattr.DisableSyncStructure;
 | 
				
			||||||
            var propsLazy = new List<NaviteTuple<PropertyInfo, bool, bool>>();
 | 
					            var propsLazy = new List<NaviteTuple<PropertyInfo, bool, bool, MethodInfo, MethodInfo>>();
 | 
				
			||||||
            var propsNavObjs = new List<PropertyInfo>();
 | 
					            var propsNavObjs = new List<PropertyInfo>();
 | 
				
			||||||
            var propsComment = CommonUtils.GetProperyCommentBySummary(entity);
 | 
					            var propsComment = CommonUtils.GetProperyCommentBySummary(entity);
 | 
				
			||||||
            var columnsList = new List<ColumnInfo>();
 | 
					            var columnsList = new List<ColumnInfo>();
 | 
				
			||||||
@@ -79,6 +79,9 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (colattr == null) colattr = new ColumnAttribute { IsIgnore = true };
 | 
					                    if (colattr == null) colattr = new ColumnAttribute { IsIgnore = true };
 | 
				
			||||||
                    else colattr.IsIgnore = true;
 | 
					                    else colattr.IsIgnore = true;
 | 
				
			||||||
 | 
					                    //Navigate 错误提示
 | 
				
			||||||
 | 
					                    var pnvAttr = common.GetEntityNavigateAttribute(trytb.Type, p);
 | 
				
			||||||
 | 
					                    if (pnvAttr != null) throw new Exception($"【导航属性】{trytb.Type.DisplayCsharp()}.{p.Name} 缺少 set 属性");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (tp == null && colattr?.IsIgnore != true)
 | 
					                if (tp == null && colattr?.IsIgnore != true)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -88,7 +91,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                        var getIsVirtual = getMethod?.IsVirtual == true && getMethod?.IsFinal == false;// trytb.Type.GetMethod($"get_{p.Name}")?.IsVirtual;
 | 
					                        var getIsVirtual = getMethod?.IsVirtual == true && getMethod?.IsFinal == false;// trytb.Type.GetMethod($"get_{p.Name}")?.IsVirtual;
 | 
				
			||||||
                        var setIsVirtual = setMethod?.IsVirtual == true && setMethod?.IsFinal == false;
 | 
					                        var setIsVirtual = setMethod?.IsVirtual == true && setMethod?.IsFinal == false;
 | 
				
			||||||
                        if (getIsVirtual == true || setIsVirtual == true)
 | 
					                        if (getIsVirtual == true || setIsVirtual == true)
 | 
				
			||||||
                            propsLazy.Add(NaviteTuple.Create(p, getIsVirtual, setIsVirtual));
 | 
					                            propsLazy.Add(NaviteTuple.Create(p, getIsVirtual, setIsVirtual, getMethod, setMethod));
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    propsNavObjs.Add(p);
 | 
					                    propsNavObjs.Add(p);
 | 
				
			||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
@@ -446,10 +449,17 @@ namespace FreeSql.Internal
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return tbc.TryGetValue(entity, out var trytb2) ? trytb2 : trytb;
 | 
					            return tbc.TryGetValue(entity, out var trytb2) ? trytb2 : trytb;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public static void AddTableRef(CommonUtils common, TableInfo trytb, PropertyInfo pnv, bool isLazy, NaviteTuple<PropertyInfo, bool, bool> vp, StringBuilder cscode)
 | 
					        public static void AddTableRef(CommonUtils common, TableInfo trytb, PropertyInfo pnv, bool isLazy, NaviteTuple<PropertyInfo, bool, bool, MethodInfo, MethodInfo> vp, StringBuilder cscode)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            var getMethod = vp?.Item4;
 | 
				
			||||||
 | 
					            var setMethod = vp?.Item5;
 | 
				
			||||||
            var trytbTypeName = trytb.Type.DisplayCsharp();
 | 
					            var trytbTypeName = trytb.Type.DisplayCsharp();
 | 
				
			||||||
            var propTypeName = pnv.PropertyType.DisplayCsharp();
 | 
					            var propTypeName = pnv.PropertyType.DisplayCsharp();
 | 
				
			||||||
 | 
					            var propModification = (getMethod?.IsPublic == true || setMethod?.IsPublic == true ? "public " : (getMethod?.IsAssembly == true || setMethod?.IsAssembly == true ? "internal " : (getMethod?.IsFamily == true || setMethod?.IsFamily == true ? "protected " : (getMethod?.IsPrivate == true || setMethod?.IsPrivate == true ? "private " : ""))));
 | 
				
			||||||
 | 
					            var propSetModification = (setMethod?.IsPublic == true ? "public " : (setMethod?.IsAssembly == true ? "internal " : (setMethod?.IsFamily == true ? "protected " : (setMethod?.IsPrivate == true ? "private " : ""))));
 | 
				
			||||||
 | 
					            var propGetModification = (getMethod?.IsPublic == true ? "public " : (getMethod?.IsAssembly == true ? "internal " : (getMethod?.IsFamily == true ? "protected " : (getMethod?.IsPrivate == true ? "private " : ""))));
 | 
				
			||||||
 | 
					            if (propSetModification == propModification) propSetModification = "";
 | 
				
			||||||
 | 
					            if (propGetModification == propModification) propGetModification = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var pnvAttr = common.GetEntityNavigateAttribute(trytb.Type, pnv);
 | 
					            var pnvAttr = common.GetEntityNavigateAttribute(trytb.Type, pnv);
 | 
				
			||||||
            var pnvBind = pnvAttr?.Bind?.Split(',').Select(a => a.Trim()).Where(a => !string.IsNullOrEmpty(a)).ToArray();
 | 
					            var pnvBind = pnvAttr?.Bind?.Split(',').Select(a => a.Trim()).Where(a => !string.IsNullOrEmpty(a)).ToArray();
 | 
				
			||||||
@@ -788,10 +798,10 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                    if (isLazy)
 | 
					                    if (isLazy)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        cscode.Append("	private bool __lazy__").Append(pnv.Name).AppendLine(" = false;")
 | 
					                        cscode.Append("	private bool __lazy__").Append(pnv.Name).AppendLine(" = false;")
 | 
				
			||||||
                                .Append("	public override ").Append(propTypeName).Append(" ").Append(pnv.Name).AppendLine(" {");
 | 
					                                .Append("	").Append(propModification).Append(" override ").Append(propTypeName).Append(" ").Append(pnv.Name).AppendLine(" {");
 | 
				
			||||||
                        if (vp?.Item2 == true)
 | 
					                        if (vp?.Item2 == true)
 | 
				
			||||||
                        { //get 重写
 | 
					                        { //get 重写
 | 
				
			||||||
                            cscode.Append("		get {\r\n")
 | 
					                            cscode.Append("		").Append(propGetModification).Append(" get {\r\n")
 | 
				
			||||||
                                .Append("			if (base.").Append(pnv.Name).Append(" == null && __lazy__").Append(pnv.Name).AppendLine(" == false) {");
 | 
					                                .Append("			if (base.").Append(pnv.Name).Append(" == null && __lazy__").Append(pnv.Name).AppendLine(" == false) {");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            if (nvref.Exception == null)
 | 
					                            if (nvref.Exception == null)
 | 
				
			||||||
@@ -808,7 +818,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        if (vp?.Item3 == true)
 | 
					                        if (vp?.Item3 == true)
 | 
				
			||||||
                        { //set 重写
 | 
					                        { //set 重写
 | 
				
			||||||
                            cscode.Append("		set {\r\n")
 | 
					                            cscode.Append("		").Append(propSetModification).Append(" set {\r\n")
 | 
				
			||||||
                                .Append("			base.").Append(pnv.Name).AppendLine(" = value;")
 | 
					                                .Append("			base.").Append(pnv.Name).AppendLine(" = value;")
 | 
				
			||||||
                                .Append("		}\r\n");
 | 
					                                .Append("		}\r\n");
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
@@ -923,10 +933,10 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                    if (isLazy)
 | 
					                    if (isLazy)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        cscode.Append("	private bool __lazy__").Append(pnv.Name).AppendLine(" = false;")
 | 
					                        cscode.Append("	private bool __lazy__").Append(pnv.Name).AppendLine(" = false;")
 | 
				
			||||||
                            .Append("	public override ").Append(propTypeName).Append(" ").Append(pnv.Name).AppendLine(" {");
 | 
					                            .Append("	").Append(propModification).Append(" override ").Append(propTypeName).Append(" ").Append(pnv.Name).AppendLine(" {");
 | 
				
			||||||
                        if (vp?.Item2 == true)
 | 
					                        if (vp?.Item2 == true)
 | 
				
			||||||
                        { //get 重写
 | 
					                        { //get 重写
 | 
				
			||||||
                            cscode.Append("		get {\r\n")
 | 
					                            cscode.Append("		").Append(propGetModification).Append(" get {\r\n")
 | 
				
			||||||
                                .Append("			if (base.").Append(pnv.Name).Append(" == null && __lazy__").Append(pnv.Name).AppendLine(" == false) {");
 | 
					                                .Append("			if (base.").Append(pnv.Name).Append(" == null && __lazy__").Append(pnv.Name).AppendLine(" == false) {");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            if (nvref.Exception == null)
 | 
					                            if (nvref.Exception == null)
 | 
				
			||||||
@@ -949,7 +959,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        if (vp?.Item3 == true)
 | 
					                        if (vp?.Item3 == true)
 | 
				
			||||||
                        { //set 重写
 | 
					                        { //set 重写
 | 
				
			||||||
                            cscode.Append("		set {\r\n")
 | 
					                            cscode.Append("		").Append(propSetModification).Append(" set {\r\n")
 | 
				
			||||||
                                .Append("			base.").Append(pnv.Name).AppendLine(" = value;")
 | 
					                                .Append("			base.").Append(pnv.Name).AppendLine(" = value;")
 | 
				
			||||||
                                .Append("		}\r\n");
 | 
					                                .Append("		}\r\n");
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
@@ -1079,10 +1089,10 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                if (isLazy)
 | 
					                if (isLazy)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    cscode.Append("	private bool __lazy__").Append(pnv.Name).AppendLine(" = false;")
 | 
					                    cscode.Append("	private bool __lazy__").Append(pnv.Name).AppendLine(" = false;")
 | 
				
			||||||
                        .Append("	public override ").Append(propTypeName).Append(" ").Append(pnv.Name).AppendLine(" {");
 | 
					                        .Append("	").Append(propModification).Append(" override ").Append(propTypeName).Append(" ").Append(pnv.Name).AppendLine(" {");
 | 
				
			||||||
                    if (vp?.Item2 == true)
 | 
					                    if (vp?.Item2 == true)
 | 
				
			||||||
                    { //get 重写
 | 
					                    { //get 重写
 | 
				
			||||||
                        cscode.Append("		get {\r\n")
 | 
					                        cscode.Append("		").Append(propGetModification).Append(" get {\r\n")
 | 
				
			||||||
                            .Append("			if (base.").Append(pnv.Name).Append(" == null && __lazy__").Append(pnv.Name).AppendLine(" == false) {");
 | 
					                            .Append("			if (base.").Append(pnv.Name).Append(" == null && __lazy__").Append(pnv.Name).AppendLine(" == false) {");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        if (nvref.Exception == null)
 | 
					                        if (nvref.Exception == null)
 | 
				
			||||||
@@ -1098,7 +1108,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    if (vp?.Item3 == true)
 | 
					                    if (vp?.Item3 == true)
 | 
				
			||||||
                    { //set 重写
 | 
					                    { //set 重写
 | 
				
			||||||
                        cscode.Append("		set {\r\n")
 | 
					                        cscode.Append("		").Append(propSetModification).Append(" set {\r\n")
 | 
				
			||||||
                            .Append("			base.").Append(pnv.Name).AppendLine(" = value;")
 | 
					                            .Append("			base.").Append(pnv.Name).AppendLine(" = value;")
 | 
				
			||||||
                            .Append("			__lazy__").Append(pnv.Name).AppendLine(" = true;")
 | 
					                            .Append("			__lazy__").Append(pnv.Name).AppendLine(" = true;")
 | 
				
			||||||
                            .Append("		}\r\n");
 | 
					                            .Append("		}\r\n");
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user