/// <summary> /// Construtor padrão. /// </summary> /// <param name="name"></param> /// <param name="parentPropertyName"></param> /// <param name="conditional"></param> /// <param name="isLoadLazy">Identifica se a referência terá carga tardia.</param> /// <param name="options">Opções de carga da referência.</param> /// <param name="savePriority">Prioridade para salvar a referência.</param> /// <param name="watchedProperties"></param> public EntityLoaderReference(string name, string parentPropertyName, ConditionalLoader conditional, bool isLoadLazy, LoadOptions options, EntityChildSavePriority savePriority, string[] watchedProperties) { _name = name; _parentPropertyName = parentPropertyName; _watchedPropertyNames = watchedProperties; _conditional = conditional; _isLoadLazy = isLoadLazy; _options = options; _savePriority = savePriority; }
/// <summary> /// Construtor padrão. /// </summary> /// <param name="name">Nome do filho.</param> /// <param name="propertyName">Nome da propriedade do filho na entidade.</param> /// <param name="parentUidSetter">Delegate usado para define o identificador unico do pai.</param> /// <param name="parentUidGetter">Delegate usado para recupera o identificador unico do pai.</param> /// <param name="parentValueGetter">Delegate usado para recuperar o valor do pai.</param> /// <param name="parentValueSetter">Delegate usado para definir o valor do pai.</param> /// <param name="foreignProperty">Propriedade de associação.</param> /// <param name="parentLoader">Instancia do loader associado.</param> /// <param name="conditional">Condicional para ser usado na carga.</param> /// <param name="isSingle">Identifica que é um filho unico.</param> /// <param name="options">Opções de carga.</param> /// <param name="savePriority">Prioridade para salvar o filho.</param> protected EntityLoaderChildInfo(string name, string propertyName, Action <IEntity, IEntity> parentUidSetter, Func <Colosoft.Data.IModel, int> parentUidGetter, Func <IEntity, IEntity> parentValueGetter, Action <IEntity, IEntity> parentValueSetter, System.Reflection.PropertyInfo foreignProperty, ConditionalLoader conditional, IEntityLoader parentLoader, bool isSingle, LoadOptions options = LoadOptions.None, EntityChildSavePriority savePriority = EntityChildSavePriority.AfterEntity) { propertyName.Require("propertyName").NotNull().NotEmpty(); _name = name; _propertyName = propertyName; _parentLoader = parentLoader; _foreignPropertyName = foreignProperty.Name; _parentUidSetter = parentUidSetter; _parentUidGetter = parentUidGetter ?? _parentLoader.GetInstanceUid; _parentValueGetter = parentValueGetter; _parentValueSetter = parentValueSetter; _options = options; _parentUidSetter2 = (parent, child) => { if (_parentUidGetter == null) { throw new InvalidOperationException("ParentUidGetter undefined"); } foreignProperty.SetValue(child, _parentUidGetter(parent), null); }; _conditional = conditional; _isSingle = isSingle; _savePriority = savePriority; }
/// <summary> /// Construtor padrão. /// </summary> /// <param name="name">Nome da referencia.</param> /// <param name="parentProperty">Propriedade do pai onde a referencia está.</param> /// <param name="conditional">Condicional para carregar a referencia.</param> /// <param name="isLoadLazy">Identifica se a referência terá carga tardia.</param> /// <param name="options">Opções de carga da referência.</param> /// <param name="savePriority"></param> /// <param name="watchedProperties">Propriedade que serão monitoradas.</param> public EntityLoaderReference(string name, System.Linq.Expressions.Expression <Func <TParentEntity, IEntity> > parentProperty, ConditionalLoader conditional, bool isLoadLazy, LoadOptions options, EntityChildSavePriority savePriority, System.Linq.Expressions.Expression <Func <TParentModel, object> >[] watchedProperties) : base(name, GetParentPropertyName(parentProperty), conditional, isLoadLazy, options, savePriority, GetwatchedPropertyNames(watchedProperties)) { _parentValueGetter = f => parentProperty.Compile()((TParentEntity)f); }
/// <summary> /// Construtor padrão. /// </summary> /// <param name="name">Nome do filho.</param> /// <param name="parentProperty">Propriedade que será definida para o pai.</param> /// <param name="parentPropertyUid">Propriedade que será usada para recuepra o identificador unico do pai.</param> /// <param name="foreignProperty">Propriedade que será usada como chave estrangeira.</param> /// <param name="conditional">Condicional que será usado na carga.</param> /// <param name="parentLoader">Instancia do loader associado.</param> /// <param name="isSingle">Identifica se é um filho unico.</param> /// <param name="options">Opções de carga.</param> /// <param name="savePriority">Prioridade para salvar o filho</param> public EntityLoaderChildInfo(string name, System.Linq.Expressions.Expression <Func <TParentEntity, IEntity> > parentProperty, System.Linq.Expressions.Expression <Func <TParentModel, int> > parentPropertyUid, System.Linq.Expressions.Expression <Func <TModel, int> > foreignProperty, ConditionalLoader conditional, IEntityLoader parentLoader, bool isSingle, LoadOptions options, EntityChildSavePriority savePriority) : base(name, parentProperty.GetMember().Name, GetParentUidSetter2(parentPropertyUid, foreignProperty), GetParentUidGetter(parentPropertyUid), f => parentProperty.Compile()((TParentEntity)f), GetParentValueSetter(parentProperty), foreignProperty.GetMember() as System.Reflection.PropertyInfo, conditional, parentLoader, isSingle, options, savePriority) { }