示例#1
0
 public IEnumerable <EAV.Store.IStoreUnit> RetrieveUnits()
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return(ctx.Units.AsEnumerable().Select(it => (EAVStoreLibrary.StoreUnit)it).ToList());
     }
 }
示例#2
0
        public void UpdateValue(EAV.Store.IStoreValue value)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                EAVStoreClient.Value dbValue = ctx.Values.SingleOrDefault(it => it.Instance_ID == value.InstanceID && it.Attribute_ID == value.AttributeID);

                if (dbValue != null)
                {
                    if (dbValue.Raw_Value != value.RawValue)
                    {
                        dbValue.Raw_Value = value.RawValue;
                    }

                    if (dbValue.Unit_ID != value.UnitID)
                    {
                        dbValue.Unit_ID = value.UnitID;
                    }

                    ctx.SaveChanges();
                }
                else
                {
                    throw (new Exception(String.Format("Unable to retrieve value for instance ID {0}, attribute ID {1}.", value.InstanceID, value.AttributeID)));
                }
            }
        }
示例#3
0
        public void UpdateContext(EAV.Store.IStoreContext context)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                EAVStoreClient.Context dbContext = ctx.Contexts.SingleOrDefault(it => it.Context_ID == context.ContextID);

                if (dbContext != null)
                {
                    if (dbContext.Name != context.Name)
                    {
                        dbContext.Name = context.Name;
                    }

                    if (dbContext.Data_Name != context.DataName)
                    {
                        dbContext.Data_Name = context.DataName;
                    }

                    if (dbContext.Display_Text != context.DisplayText)
                    {
                        dbContext.Display_Text = context.DisplayText;
                    }

                    ctx.SaveChanges();
                }
                else
                {
                    throw (new Exception(String.Format("Unable to retrieve context ID {0}.", context.ContextID)));
                }
            }
        }
示例#4
0
 public EAV.Store.IStoreEntity RetrieveEntity(int entityID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return((EAVStoreLibrary.StoreEntity)ctx.Entities.SingleOrDefault(it => it.Entity_ID == entityID));
     }
 }
示例#5
0
 public EAV.Store.IStoreContext RetrieveContext(string name)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return((EAVStoreLibrary.StoreContext)ctx.Contexts.SingleOrDefault(it => it.Name == name));
     }
 }
示例#6
0
 public EAV.Store.IStoreUnit RetrieveUnit(int unitID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return((EAVStoreLibrary.StoreUnit)ctx.Units.SingleOrDefault(it => it.Unit_ID == unitID));
     }
 }
示例#7
0
        public EAV.Store.IStoreInstance CreateChildInstance(EAV.Store.IStoreInstance instance, int containerID, int parentInstanceID)
        {
            if (instance == null)
            {
                return(null);
            }

            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                Instance dbInstance       = new Instance(instance);
                Instance dbParentInstance = ctx.Instances.SingleOrDefault(it => it.Instance_ID == parentInstanceID);

                // TODO: Error if dbParentInstance is null

                dbInstance.Subject_ID         = dbParentInstance.Subject_ID;
                dbInstance.Container_ID       = containerID;
                dbInstance.Parent_Instance_ID = parentInstanceID;

                ctx.Instances.Add(dbInstance);

                ctx.SaveChanges();

                return((EAVStoreLibrary.StoreInstance)dbInstance);
            }
        }
示例#8
0
        public void UpdateAttributeUnits(int attributeID, IEnumerable <EAV.Store.IStoreUnit> units)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbAttribute = ctx.Attributes.SingleOrDefault(it => it.Attribute_ID == attributeID);

                if (dbAttribute != null)
                {
                    var unitsToDelete = dbAttribute.Units.GroupJoin(units, left => left.Unit_ID, right => right.UnitID.GetValueOrDefault(), (left, right) => new { UnitToDelete = left, SentinelUnit = right.FirstOrDefault() }).Where(it => it.SentinelUnit == null).Select(it => it.UnitToDelete.Unit_ID);
                    var unitsToAdd    = units.GroupJoin(dbAttribute.Units, left => left.UnitID.GetValueOrDefault(), right => right.Unit_ID, (left, right) => new { UnitToAdd = left, SentinelUnit = right.FirstOrDefault() }).Where(it => it.SentinelUnit == null && it.UnitToAdd.UnitID != 0).Select(it => it.UnitToAdd.UnitID.GetValueOrDefault());

                    foreach (int id in unitsToDelete)
                    {
                        dbAttribute.Units.Remove(dbAttribute.Units.Single(it => it.Unit_ID == id));
                    }

                    foreach (int id in unitsToAdd)
                    {
                        dbAttribute.Units.Add(ctx.Units.Single(it => it.Unit_ID == id));
                    }

                    ctx.SaveChanges();
                }
                else
                {
                    throw(new Exception(String.Format("Unable to retrieve attribute ID {0}.", attributeID)));
                }
            }
        }
示例#9
0
 public EAV.Store.IStoreInstance RetrieveInstance(int instanceID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return((EAVStoreLibrary.StoreInstance)ctx.Instances.SingleOrDefault(it => it.Instance_ID == instanceID));
     }
 }
示例#10
0
 public EAV.Store.IStoreAttribute RetrieveAttribute(int attributeID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return((EAVStoreLibrary.StoreAttribute)ctx.Attributes.Include("Data_Type").SingleOrDefault(it => it.Attribute_ID == attributeID));
     }
 }
示例#11
0
 public EAV.Store.IStoreValue RetrieveValue(int attributeID, int instanceID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return((EAVStoreLibrary.StoreValue)ctx.Values.SingleOrDefault(it => it.Instance_ID == instanceID && it.Attribute_ID == attributeID));
     }
 }
示例#12
0
        public EAV.Store.IStoreContainer CreateChildContainer(EAV.Store.IStoreContainer container, int parentContainerID)
        {
            if (container == null)
            {
                return(null);
            }

            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                Container dbContainer       = new Container(container);
                Container dbParentContainer = ctx.Containers.SingleOrDefault(it => it.Container_ID == parentContainerID);

                if (dbContainer == null)
                {
                    throw (new InvalidOperationException("Unable to locate parent container."));
                }

                dbContainer.Context_ID          = dbParentContainer.Context_ID;
                dbContainer.Parent_Container_ID = parentContainerID;

                ctx.Containers.Add(dbContainer);

                ctx.SaveChanges();

                return((EAVStoreLibrary.StoreContainer)dbContainer);
            }
        }
示例#13
0
 public EAV.Store.IStoreContainer RetrieveContainer(int containerID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return((EAVStoreLibrary.StoreContainer)ctx.Containers.SingleOrDefault(it => it.Container_ID == containerID));
     }
 }
示例#14
0
 public EAV.Store.IStoreSubject RetrieveSubject(int subjectID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         return((EAVStoreLibrary.StoreSubject)ctx.Subjects.SingleOrDefault(it => it.Subject_ID == subjectID));
     }
 }
示例#15
0
        public void UpdateAttribute(EAV.Store.IStoreAttribute attribute)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                EAVStoreClient.Attribute dbAttribute = ctx.Attributes.SingleOrDefault(it => it.Attribute_ID == attribute.AttributeID);

                if (dbAttribute != null)
                {
                    if (dbAttribute.Name != attribute.Name)
                    {
                        dbAttribute.Name = attribute.Name;
                    }

                    if (dbAttribute.Data_Name != attribute.DataName)
                    {
                        dbAttribute.Data_Name = attribute.DataName;
                    }

                    if (dbAttribute.Display_Text != attribute.DisplayText)
                    {
                        dbAttribute.Display_Text = attribute.DisplayText;
                    }

                    if (dbAttribute.Data_Type.Name != attribute.DataType.ToString())
                    {
                        dbAttribute.Data_Type = ctx.Data_Type.Single(it => it.Name == attribute.DataType.ToString());
                    }

                    if (dbAttribute.Sequence != attribute.Sequence)
                    {
                        dbAttribute.Sequence = attribute.Sequence;
                    }

                    if (dbAttribute.Is_Key != attribute.IsKey)
                    {
                        dbAttribute.Is_Key = attribute.IsKey;
                    }

                    if (dbAttribute.Variable_Units != attribute.VariableUnits)
                    {
                        dbAttribute.Variable_Units = attribute.VariableUnits;
                    }

                    ctx.SaveChanges();
                }
                else
                {
                    throw (new Exception(String.Format("Unable to retrieve attribute ID {0}.", attribute.AttributeID)));
                }
            }
        }
示例#16
0
        public void UpdateUnit(EAV.Store.IStoreUnit aUnit)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                EAVStoreClient.Unit dbUnit = ctx.Units.SingleOrDefault(it => it.Unit_ID == aUnit.UnitID);

                if (dbUnit != null)
                {
                    if (dbUnit.Singular_Name != aUnit.SingularName)
                    {
                        dbUnit.Singular_Name = aUnit.SingularName;
                    }

                    if (dbUnit.Singular_Abbreviation != aUnit.SingularAbbreviation)
                    {
                        dbUnit.Singular_Abbreviation = aUnit.SingularAbbreviation;
                    }

                    if (dbUnit.Plural_Name != aUnit.PluralName)
                    {
                        dbUnit.Plural_Name = aUnit.PluralName;
                    }

                    if (dbUnit.Plural_Abbreviation != aUnit.PluralAbbreviation)
                    {
                        dbUnit.Plural_Abbreviation = aUnit.PluralAbbreviation;
                    }

                    if (dbUnit.Symbol != aUnit.Symbol)
                    {
                        dbUnit.Symbol = aUnit.Symbol;
                    }

                    if (dbUnit.Display_Text != aUnit.DisplayText)
                    {
                        dbUnit.Display_Text = aUnit.DisplayText;
                    }

                    if (dbUnit.Curated != aUnit.Curated)
                    {
                        dbUnit.Curated = aUnit.Curated;
                    }

                    ctx.SaveChanges();
                }
                else
                {
                    throw (new Exception(String.Format("Unable to retrieve Unit ID {0}.", aUnit.UnitID)));
                }
            }
        }
示例#17
0
        public void DeleteSubject(int subjectID)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbSubject = ctx.Subjects.SingleOrDefault(it => it.Subject_ID == subjectID);

                if (dbSubject != null)
                {
                    ctx.Subjects.Remove(dbSubject);

                    ctx.SaveChanges();
                }
            }
        }
示例#18
0
        public void DeleteUnit(int unitID)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbUnit = ctx.Units.SingleOrDefault(it => it.Unit_ID == unitID);

                if (dbUnit != null)
                {
                    ctx.Units.Remove(dbUnit);

                    ctx.SaveChanges();
                }
            }
        }
示例#19
0
 public IEnumerable <EAV.Store.IStoreContainer> RetrieveChildContainers(int?parentContainerID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         if (parentContainerID != null)
         {
             return(ctx.Containers.Where(it => it.Parent_Container_ID == parentContainerID).AsEnumerable().Select(it => (EAVStoreLibrary.StoreContainer)it).ToList());
         }
         else
         {
             return(ctx.Containers.Where(it => it.Parent_Container_ID != null).AsEnumerable().Select(it => (EAVStoreLibrary.StoreContainer)it).ToList());
         }
     }
 }
示例#20
0
        public void DeleteContainer(int containerID)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbContainer = ctx.Containers.SingleOrDefault(it => it.Container_ID == containerID);

                if (dbContainer != null)
                {
                    ctx.Containers.Remove(dbContainer);

                    ctx.SaveChanges();
                }
            }
        }
示例#21
0
        public void DeleteInstance(int instanceID)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbInstance = ctx.Instances.SingleOrDefault(it => it.Instance_ID == instanceID);

                if (dbInstance != null)
                {
                    ctx.Instances.Remove(dbInstance);

                    ctx.SaveChanges();
                }
            }
        }
示例#22
0
 public IEnumerable <EAV.Store.IStoreAttribute> RetrieveAttributes(int?containerID)
 {
     using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
     {
         if (containerID != null)
         {
             return(ctx.Attributes.Include("Data_Type").Where(it => it.Container_ID == containerID).AsEnumerable().Select(it => (EAVStoreLibrary.StoreAttribute)it).ToList());
         }
         else
         {
             return(ctx.Attributes.Include("Data_Type").AsEnumerable().Select(it => (EAVStoreLibrary.StoreAttribute)it).ToList());
         }
     }
 }
示例#23
0
        public void DeleteEntity(int entityID)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbEntity = ctx.Entities.SingleOrDefault(it => it.Entity_ID == entityID);

                if (dbEntity != null)
                {
                    ctx.Entities.Remove(dbEntity);

                    ctx.SaveChanges();
                }
            }
        }
示例#24
0
        public void DeleteValue(int attributeID, int instanceID)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbValue = ctx.Values.SingleOrDefault(it => it.Instance_ID == instanceID && it.Attribute_ID == attributeID);

                if (dbValue != null)
                {
                    ctx.Values.Remove(dbValue);

                    ctx.SaveChanges();
                }
            }
        }
示例#25
0
        public void UpdateInstance(EAV.Store.IStoreInstance instance)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                EAVStoreClient.Instance dbInstance = ctx.Instances.SingleOrDefault(it => it.Instance_ID == instance.InstanceID);

                if (dbInstance != null)
                {
                    // Nothing to do at the moment, but including skeleton for completness and possible future expansion.
                }
                else
                {
                    throw (new Exception(String.Format("Unable to retrieve instance ID {0}.", instance.InstanceID)));
                }
            }
        }
示例#26
0
        public IEnumerable <EAV.Store.IStoreUnit> RetrieveAttributeUnits(int attributeID)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbAttribute = ctx.Attributes.SingleOrDefault(it => it.Attribute_ID == attributeID);

                if (dbAttribute != null)
                {
                    return(dbAttribute.Units.Select(it => (EAVStoreLibrary.StoreUnit)it));
                }
                else
                {
                    throw(new Exception(String.Format("Unable to retrieve attribute ID {0}.", attributeID)));
                }
            }
        }
示例#27
0
        public void DeleteAttribute(int attributeID)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                var dbAttribute = ctx.Attributes.SingleOrDefault(it => it.Attribute_ID == attributeID);

                if (dbAttribute != null)
                {
                    // TODO: Right way to do this?
                    dbAttribute.Units.Clear();

                    ctx.Attributes.Remove(dbAttribute);

                    ctx.SaveChanges();
                }
            }
        }
示例#28
0
        public EAV.Store.IStoreContainer CreateRootContainer(EAV.Store.IStoreContainer container, int contextID)
        {
            if (container == null)
            {
                return(null);
            }

            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                Container dbContainer = new Container(container);

                dbContainer.Context_ID = contextID;

                ctx.Containers.Add(dbContainer);

                ctx.SaveChanges();

                return((EAVStoreLibrary.StoreContainer)dbContainer);
            }
        }
示例#29
0
        public EAV.Store.IStoreUnit CreateUnit(EAV.Store.IStoreUnit aUnit)
        {
            if (aUnit == null)
            {
                return(null);
            }

            // TODO: Need to check that at least one string property has a non-empty value?

            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                Unit dbUnit = new Unit(aUnit);

                ctx.Units.Add(dbUnit);

                ctx.SaveChanges();

                return((EAVStoreLibrary.StoreUnit)dbUnit);
            }
        }
示例#30
0
        public void UpdateContainer(EAV.Store.IStoreContainer container)
        {
            using (EAVStoreClient.MicroEAVContext ctx = new MicroEAVContext())
            {
                EAVStoreClient.Container dbContainer = ctx.Containers.SingleOrDefault(it => it.Container_ID == container.ContainerID);

                if (dbContainer != null)
                {
                    if (dbContainer.Name != container.Name)
                    {
                        dbContainer.Name = container.Name;
                    }

                    if (dbContainer.Data_Name != container.DataName)
                    {
                        dbContainer.Data_Name = container.DataName;
                    }

                    if (dbContainer.Display_Text != container.DisplayText)
                    {
                        dbContainer.Display_Text = container.DisplayText;
                    }

                    if (dbContainer.Is_Repeating != container.IsRepeating)
                    {
                        dbContainer.Is_Repeating = container.IsRepeating;
                    }

                    if (dbContainer.Sequence != container.Sequence)
                    {
                        dbContainer.Sequence = container.Sequence;
                    }

                    ctx.SaveChanges();
                }
                else
                {
                    throw (new Exception(String.Format("Unable to retrieve container ID {0}.", container.ContainerID)));
                }
            }
        }