Example #1
0
 /// <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;
 }
Example #2
0
 /// <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)
 {
 }