Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Entity Framework создание и изменение записи


Автор: kelt 25.9.2014, 06:30
Всем привет, я пока новичек с Entity Framework, поэтому разные вопросы появляются то там то там

Опишу сначала модель:

Код

public class Parent {
    public int Id { get; set; }
    public DateTime date { get; set; }
    public string Name { get; set; }

    public IList<Child> Children { get; set; }
}

public class Child {
    public ind Id { get; set; }
    
    public int ProgramId { get; set; }
    public virtual Program Program { get; set; } /// просто модель справочник

    public double summa { get; set; }

    public int ParentId { get; set; }
    public virtual Parent Parent { get; set; }
}


так вот, контроллеры создавал с использованием Скайфол, так что все ActionResult и View создались автоматом,
сохранение нового объекта Parent с коллекцией объектов Child в базу, проходит нормально, а вот сохранение изменений валится

вот код контроллера:

Код

public ActionResult Create(Parent parent, String param)
{
            IList<Child> list = JSON.Deserialize<IList<Child>>(param);

            parent.Children = list;

            if (ModelState.IsValid)
            {
                db.Parents.Add(parent);
                db.SaveChanges();
            }

            return this.Direct();
}

public ActionResult Edit(Parent parent, String param)
{
            if (ModelState.IsValid)
            {
                IList<Child> _list = JSON.Deserialize<IList<Child>>(param);

                parent.Children = _list;

                db.Entry(parent).State = EntityState.Modified;
                db.SaveChanges();
            }
            return this.Direct();
}



так вот на строчке db.Entry(parent).State = EntityState.Modified; и вылетает

вот текст ошибки:

A referential integrity constraint violation occurred: The property values that define the referential constraints are not consistent between principal and dependent objects in the relationship.

Автор: Ilya81 25.9.2014, 10:07
В переменной _list у объектов Child свойство ParentId правильно задано?

Автор: kelt 25.9.2014, 17:53
Да я задавал в цикле, но все равно получал ошибку

Автор: Ilya81 26.9.2014, 10:31
Проверьте и другие свойства - Program, ProgramId (ну и свойство Parent, естественно) - где-то что-то оказывается заданным не так после десериализации.

Автор: kelt 26.9.2014, 17:28
А как должно быть задано, если например я добавляю еще строчки или удаляю какие нибуть?

Автор: kelt 7.10.2014, 03:14
Может у кого то есть мысли?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)