Beispiel #1
0
 public object GetDeserializedObject(object obj, Type targetType)
 {
     Surrogates.MultipleEntry entry = obj as Surrogates.MultipleEntry;
     if (entry != null)
     {
         MultipleEntry entryToDeserialize = new MultipleEntry(entry.Name);
         entryToDeserialize.TypedValue = entry.Entities;
         return entryToDeserialize;
     }
     Surrogates.Command command = obj as Surrogates.Command;
     if (command != null)
     {
         return null;
     }
     return obj;
 }
Beispiel #2
0
        public override CreateReferenceCommand Visit(CreateReferenceCommand c)
        {
            _RWL.AcquireWriterLock();

            try
            {
                Entity childEntity = GetEntity(c.ChildType, c.ChildId);
                Entity parentEntity = GetEntity(c.ParentType, c.ParentId);

                State tmpState = parentEntity.State;
                if (c.Reference.Cardinality.IsToMany)
                {
                    MultipleEntry me = (MultipleEntry)parentEntity[c.Role ?? c.Reference.Name];
                    if (me == null)
                        parentEntity.Add(me = new MultipleEntry(c.Role ?? c.Reference.Name));
                    me.Add(Entry.Create(c.Role ?? c.Reference.Name, tmpState, childEntity));
                }
                else
                    parentEntity.Add(c.Role ?? c.Reference.Name, childEntity);
                parentEntity.State = tmpState;
            }
            finally
            {
                _RWL.ReleaseWriterLock();
            }
            return c;
        }