Esempio n. 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;
 }
Esempio n. 2
0
 /// <summary>
 /// Inicializa a instancia.
 /// </summary>
 /// <param name="name">Nome do link.</param>
 /// <param name="childName">Nome do filho associado com o link.</param>
 /// <param name="linkParentForeignKeySetter"></param>
 /// <param name="linkParentForeignKeyGetter">Instancia usada para recuperar o valor da chave do pai do link.</param>
 /// <param name="childKeyGetter">Instancia usada para recuperar o valor da chave do filho que está no link.</param>
 /// <param name="parentValueGetter"></param>
 /// <param name="parentValueSetter"></param>
 /// <param name="foreignProperty"></param>
 /// <param name="childProperty">Dados da propriedade do link usada para associa-lo com filho.</param>
 /// <param name="linkCreator">Func usada para criar uma instancia do link associado com entidade do filho associado.</param>
 /// <param name="entityFromLinkCreator">Func usada para criar uma instancia do filho baseado na entidade do link.</param>
 /// <param name="isSingle"></param>
 /// <param name="options">Opções de carga do link.</param>
 /// <param name="savePriority"></param>
 protected void Initialize(string name, string childName, Action <IEntity, IEntity> linkParentForeignKeySetter, Func <Colosoft.Data.IModel, int> linkParentForeignKeyGetter, Func <Colosoft.Data.IModel, int> childKeyGetter, Func <IEntity, IEntity> parentValueGetter, Action <IEntity, IEntity> parentValueSetter, System.Reflection.PropertyInfo foreignProperty, System.Reflection.PropertyInfo childProperty, LinkCreatorHandler linkCreator, EntityFromLinkCreatorHandler entityFromLinkCreator, bool isSingle, LoadOptions options = LoadOptions.None, EntityChildSavePriority savePriority = EntityChildSavePriority.AfterEntity)
 {
     _name                       = name;
     _childName                  = childName;
     _foreignPropertyName        = foreignProperty.Name;
     _childPropertyName          = childProperty.Name;
     _options                    = options;
     _linkParentForeignKeySetter = linkParentForeignKeySetter;
     _linkParentForeignKeyGetter = linkParentForeignKeyGetter;
     _childKeyGetter             = childKeyGetter;
     _parentValueGetter          = parentValueGetter;
     _parentValueSetter          = parentValueSetter;
     _entityFromLinkCreator      = entityFromLinkCreator;
     _linkCreator                = linkCreator;
     _isSingle                   = isSingle;
     _savePriority               = savePriority;
 }
Esempio n. 3
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)
 {
 }
Esempio n. 6
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="name">Nome do link.</param>
 /// <param name="childName">Nome do pai associado.</param>
 /// <param name="parentProperty">Propriedade da entidade pai na qual o link será definido.</param>
 /// <param name="childForeignProperty">Propriedade do filho da entidade na qual o link está associado.</param>
 /// <param name="childProperty">Propriedade do link que faz associação com o filho.</param>
 /// <param name="isSingle">Identifica se é um filho simples.</param>
 /// <param name="options">Opções de carga.</param>
 /// <param name="savePriority"></param>
 public EntityLoaderLinkInfo(string name, string childName, System.Linq.Expressions.Expression <Func <TParentEntity, IEntity> > parentProperty, System.Linq.Expressions.Expression <Func <TLinkParentDataModel, int?> > childForeignProperty, System.Linq.Expressions.Expression <Func <TLinkDataModel, int> > childProperty, bool isSingle, LoadOptions options, EntityChildSavePriority savePriority)
 {
     _foreignPropertyNullable = childForeignProperty;
     _childProperty           = childProperty;
     _parentProperty          = parentProperty;
     Initialize(name, childName, SetLinkParentForeignKeyNullable, GetLinkParentForeignKeyNullable, GetChildKey, GetParentValue, GetParentValueSetter(parentProperty), GetForeignPropertyInfo(), GetChildPropertyInfo(), CreateLink, CreateEntityFromLink, isSingle, options, savePriority);
 }