Exemplo n.º 1
0
        public void Create_AttrValuesFields_ForWork(Work _work, WorkTypeEnum type)
        {
            ChangeTracker.DetectChanges();
            int        typeID     = (int)type;
            var        oldAttrIds = _work.AttrValues.Select(a => a.AttrID).ToList();
            List <int> attrIDs    = (from a in WorkTypeAttrs where a.WorkTypeID == typeID select a.AttrID).ToList();

            attrIDs.RemoveAll(a => oldAttrIds.Contains(a)); //Удаляем те атрибуты, что была, добавлять будем только новые
            List <AttrValue> vals = new List <AttrValue>();

            foreach (var a in attrIDs)
            {
                AttrValue value = new AttrValue();
                value.WorkID = _work.ID;
                value.AttrID = a;           // todo почему здесь не заполняется поле DataType ?
                vals.Add(value);
            }
            AttrValues.AddRange(vals);
            try
            {
                SaveChanges();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Exemplo n.º 2
0
 public void Update_AttrValues_ForWork(List <AttrValue> values)
 {
     foreach (var v in values)
     {
         ChangeTracker.DetectChanges();
         AttrValues.AddOrUpdate(v);
         SaveChanges();
     }
 }
Exemplo n.º 3
0
        public void Delete_AttrValuesFields_ForWork(int WorkID)
        {
            // todo довольно странный способ удаления объектов, но в EF реально грустно
            // здесь есть некоторый ускоритель, в некоторых случаях он реально может спасти https://habr.com/post/203214/

            IEnumerable <AttrValue> toDeleteDB = (from a in AttrValues where a.WorkID == WorkID select a).ToList();

            AttrValues.RemoveRange(toDeleteDB);
        }
Exemplo n.º 4
0
        public AttrValue GetAttributeValue(string attributeName)
        {
            if (string.IsNullOrEmpty(attributeName))
            {
                throw new ArgumentNullException(nameof(attributeName));
            }
            var result = AttrValues.FirstOrDefault(av => av.Attr.Name == attributeName);

            return(result);
        }
Exemplo n.º 5
0
 public List <AttrValue> Read_AttrValues_ForWork(Work work)
 {
     return(AttrValues.Include(a => a.Attribute).Where(a => a.WorkID == work.ID).ToList()); // todo, не нашёл где используется этот метод
 }