Exemplo n.º 1
0
 /// <summary>
 /// Gets the column members.
 /// </summary>
 /// <param name="entityType">Type of the entity.</param>
 /// <param name="metaModel">The meta model.</param>
 /// <returns></returns>
 protected virtual IEnumerable<MemberInfo> GetColumnMembers(Type entityType, MetaModel metaModel)
 {
     foreach (var dataMember in metaModel.GetTable(entityType).RowType.PersistentDataMembers)
     {
         yield return dataMember.Member;
     }
 }
Exemplo n.º 2
0
        [ResourceConsumption(ResourceScope.Assembly | ResourceScope.Machine)]      // MappedRootType constructor call.
        private MetaType GetMetaType(TypeMapping tm, Type elementType)
        {
            MetaTable tbl = model.GetTable(elementType);

            if (tbl != null)
            {
                return(tbl.RowType.GetInheritanceType(elementType));
            }
            return(new MappedRootType((MappedMetaModel)model, null, tm, elementType));
        }
Exemplo n.º 3
0
        private void RegisterNotification(object entity, object entityOriginalState, MetaModel metaModel)
        {
            if (modifiedProperties.ContainsKey(entity))
                return;
            modifiedProperties[entity] = null;

            var entityChanged = entity as INotifyPropertyChanged;
            if (entityChanged != null)
            {
                entityChanged.PropertyChanged += OnPropertyChangedEvent;
            }

            var entityChanging = entity as INotifyPropertyChanging;
            if (entityChanging != null)
            {
                entityChanging.PropertyChanging += OnPropertyChangingEvent;
            }

            // then check all properties, and note them as changed if they already did
            if (!ReferenceEquals(entity, entityOriginalState)) // only if we specified another original entity
            {
                foreach (var dataMember in metaModel.GetTable(entity.GetType()).RowType.PersistentDataMembers)
                {
                    var memberInfo = dataMember.Member;
                    if (entityOriginalState == null ||
                        IsPropertyModified(memberInfo.GetMemberValue(entity),
                                           memberInfo.GetMemberValue(entityOriginalState)))
                    {
                        SetPropertyChanged(entity, memberInfo.Name);
                    }
                }
            }
        }