using Ant.ORM; using System; using System.Reflection; namespace Ant.Descriptors { public class NavigationMemberDescriptor : MemberDescriptor { MemberInfo _memberInfo; /// <summary> /// 假设实体 Order 内有个导航属性 User, Order.UserId=User.Id,则 ThisKey 为 Order.UserId,AssociatingKey 为 User.Id /// </summary> /// <param name="memberInfo"></param> /// <param name="memberType"></param> /// <param name="declaringEntityDescriptor"></param> /// <param name="thisKey">定义导航属性实体相关的属性或字段名称</param> /// <param name="associatingKey">关联导航属性实体类型的属性或字段名称</param> public NavigationMemberDescriptor(MemberInfo memberInfo, Type memberType, FiledMetaData declaringEntityDescriptor, string thisKey, string associatingKey) : base(declaringEntityDescriptor) { this._memberInfo = memberInfo; this.ThisKey = thisKey; this.AssociatingKey = associatingKey; } /// <summary> /// 获取有关成员特性的信息并提供对成员元数据的访问 /// </summary> public override MemberInfo MemberInfo { get { return this._memberInfo; } } /// <summary> /// 表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型 /// </summary> public override Type MemberInfoType { get { throw new NotImplementedException(); } } /// <summary> /// 标记每个已定义为 MemberInfo 的派生类的成员类型 /// </summary> public override MemberTypes MemberType { get { throw new NotImplementedException(); } } /// <summary> /// 假设实体 Order 内有个导航属性 User, Order.UserId=User.Id,则 ThisKey 为 Order.UserId,AssociatingKey 为 User.Id /// </summary> public string ThisKey { get; private set; } public string AssociatingKey { get; private set; } } }