Exemplo n.º 1
0
        public void SaveDependency(FieldFieldDependency dependency)
        {
            var fieldsToCreate = dependency.RelatedFields.Where(f => f.Id <= 0).ToList(); //jeśli jakieś pola zależne nie istnieją->tworzymy je

            fieldsToCreate.ForEach(currentField => _context.Field.Add(currentField));
            _context.SaveChanges();
            //bład-> pobranie na nowo wszystkich pól zależnych z contekstu(różne żądania, EF gubi tracking)
            var idsAllRelatedFields = dependency.RelatedFields.Select(f => f.Id).ToList();

            dependency.RelatedFields = _context.Field.Where(f => idsAllRelatedFields.Contains(f.Id)).ToList();
            dependency.ThisField     = _context.Field.FirstOrDefault(f => f.Id == dependency.Id);
            //bład-> pobranie na nowo wszystkich pól zależnych z contekstu
            //czy zależność już istnieje
            FieldFieldDependency existingDependency = Dependencies
                                                      .FirstOrDefault(dep => (dep.Id == dependency.Id) &&
                                                                      (dep.ActivationValue == dependency.ActivationValue) &&
                                                                      (dep.DependencyType == dependency.DependencyType));

            if (existingDependency != null) //czyli istnieje
            {
                existingDependency.RelatedFields.AddRange(dependency.RelatedFields);
                _context.Dependencies.Update(existingDependency);
            }
            else
            {
                _context.Dependencies.Add(dependency);
            }
            _context.SaveChanges();
        }
Exemplo n.º 2
0
        public static void SeedDependencies(IFieldDependenciesRepository repository, FormGeneratorContext context)
        {
            Field korzen = context.Field.FirstOrDefault(f => f.Id == 1);
            var   fields = context.Field.Where(f => f.Id != 1).ToList();
            FieldFieldDependency dep1 = new FieldFieldDependency(korzen, FieldFieldDependencyType.FieldDuplication, "22");

            fields.ForEach(f => dep1.RelatedFields.Add(f));
            var test = repository.GetAllDependFields();

            repository.SaveDependency(dep1);
        }