obase社区Obase开发者QQ群:962698871
obase

欢迎查阅
OBASE帮助文档

基于关联关系,我们可以在关联端(对象)内部定义一个指针,以便从关联的一端导航到另一端,这个指针称为关联引用。例如在学生与班级的“隶属”关联中,Student是关联端,其内部定义了一个关联引用_class,它指向该学生所属的班级;Class也是一个关联端,其内部也定义了一个关联引用_students,它指向隶属于该班级的学生,由于一个班级有多个学生,所以它是一个集合。

基于显示关联定义的关联引用,称为显式引用;基于隐式关联定义的关联引用,称为隐式引用。显式引用直接引用关联实例;而隐式引用不会引用关联实例(因为对象系统中没有物理存在的关联实例),而是引用关联另一端,将当前对象与隐式引用的对象配对即可间接得到关联实例。

在实体型上使用AssociationReference系列方法可以得到关联引用的配置,下面我们逐一介绍实体型配置的API。

  • HasAssociationType 设置关联型,此方法有两个重载。
HasAssociationType<TAssociation>()
HasAssociationType<TEnd1, TEnd2>()

这两个方法的返回值都是关联引用配置,可以继续调用其他配置方法。 第一个方法是设置显式关联型,第二个方法是设置隐式关联型,注意在设置隐式关联型时注意泛型参数的顺序。

  • HasEnableLazyLoading 设置是否进行延迟加载,此方法有一个重载。
HasEnableLazyLoading(bool enableLazyLoading)

此方法的返回值是关联引用配置,可以继续调用其他配置方法。 此方法是指定此关联引用是否进行延迟加载,如不需要延迟加载,则要使用Include强制包含方法加载关联引用对象。

  • HasLoadingPriority 指定关联引用的加载优先级,此方法有一个重载。
HasLoadingPriority(int loadingPriority)

此方法的返回值是关联引用配置,可以继续调用其他配置方法。 此方法是指定此关联引用加载的优先级,当有多个关联引用时,优先级越小的越先加载。

  • HasLeftEnd 指定关联引用的左端,此方法有两个重载。
HasLeftEnd<TProperty>(Expression<Func<TAssociation, TProperty>> expression)
HasLeftEnd(string leftEnd)

这两个方法的返回值都是关联引用配置,可以继续调用其他配置方法。 第一个方法接受一个表达式表示的委托,指示此关联引用的左端是哪个属性。 第二个方法接受一个字符串,根据名字指示此关联引用的左端是哪个属性。

  • HasRightEnd 指定关联引用的左端,此方法有两个重载。
HasRightEnd<TProperty>(Expression<Func<TAssociation, TProperty>> expression)
HasRightEnd(string rightEnd)

这两个方法的返回值都是关联引用配置,可以继续调用其他配置方法。 第一个方法接受一个表达式表示的委托,指示此关联引用的右端是哪个属性。 第二个方法接受一个字符串,根据名字指示此关联引用的右端是哪个属性。

  • HasValueGetter 设置属性的取值器,此方法有九个重载。
HasValueGetter(IValueGetter valueGetter)
HasValueGetter<TProperty>(Func<TStructural, TProperty> getValue)
HasValueGetter<TProperty>(Func<TStructural, IEnumerable<TProperty>> getValue)
HasValueGetter(MethodInfo method)
HasValueGetter(PropertyInfo property)
HasValueGetter(FieldInfo field)
HasValueGetter(string memberName, MemberTypes memberType)
HasValueGetter<TProperty>(MemberTypes memberType)
HasValueGetter<TProperty>()  

这些方法的返回值均为属性配置项,可以继续配置其他属性选项。 取值器是从属性中取值的方法,即使用属性的Get方法获取值。 第一个方法接受IValueGetter接口参数,可实现自定义的取值方法。 第二个方法接受表达式,指定此属性配置从类的哪个属性取值,此方法仅能配置多重性为0,1的属性。 第三个方法指定此属性配置从类的哪个属性取值,此方法仅能配置多重性为0,*的属性。 第四个至第六个方法接受反射获取的方法信息,属性信息或者字段信息,并从他们相应的内容取值。 第七个方法接受成员的名称,并根据成员类型反射获取其方法信息,属性信息或者字段信息从其中取值。 第八个方法接受泛型参数,并根据成员类型和泛型参数类型反射获取其方法信息,属性信息或者字段信息从其中取值。 第九个方法接受泛型参数,按照字段反射获取其字段信息从其中取值。

  • HasValueSetter 设置属性的设值器,共有十一个重载。
HasValueSetter<TProperty>(Expression<Func<TStructural, TProperty>> expression)
HasValueSetter<TProperty, TElement>(Expression<Func<TStructural, TProperty>> propertyExp,Func<IEnumerable<TElement>, TProperty> valueCreator)
HasValueSetter<TValue>(Action<TStructural, TValue> setValue, eValueSettingMode mode)
HasValueSetter<TValue, TElement>(Action<TStructural, TValue> setValue,Func<IEnumerable<TElement>, TValue> valueCreator)
HasValueSetter(IValueSetter valueSetter)
HasValueSetter(MethodInfo method, eValueSettingMode mode)
HasValueSetter(PropertyInfo property)
HasValueSetter(FieldInfo field)
HasValueSetter(string memberName, MemberTypes memberType)
HasValueSetter<TProperty>(MemberTypes memberType)
HasValueSetter<TProperty>()

这些方法的返回值均为属性配置项,可以继续配置其他属性选项。 设值器是为属性设值的方法,即使用属性的Set方法设置值。 第一个方法接受一个表达式表示属性的委托,将指定的属性设置为当前属性配置的设值器。 第二个方法接受表达式表示属性的委托和用于创建元素的委托,根据这两个委托构造此属性配置的设值器。 第三个方法接受一个设值方法委托和设值模式枚举,委托指示如何设值,枚举有两个值:赋值模式和追加模式。 第四个方法接受一个设值方法委托和用于创建元素的委托,根据这两个委托构造此属性配置的设值器。 第五个方法受IValueSetter接口参数,可实现自定义的设值方法。 第六个方法到第八个方法接受反射获取的方法信息,属性信息或者字段信息,并根据他们相应的内容设值。 第九个方法接受成员的名称,并根据成员类型反射获取其方法信息,属性信息或者字段信息为属性设值。 第十个方法接受泛型参数,并根据成员类型和泛型参数类型反射获取其方法信息,属性信息或者字段信息为属性设值。 第十一个方法接受泛型参数,按照字段反射获取其字段信息为属性设值。

没有找到您需要的文档?

您还可以通过人工服务在线咨询,服务时间为每天上午9点至下午6点。

If you can't find required answer, get in touch with us online. We provide service from 9:00 to 18:00.

让编程成为一件快乐的事
现在开始