SvetlyiAkaPro
@SvetlyiAkaPro

Как исправить ошибку с сохранением двух сущностей в базе данных?

Имеется:
public class DataContext : DbContext
{
.......
public DbSet<Операция> Операции { get; set; }
public DbSet<Документ> Документы { get; set; }
.......
}

Соответственно есть модели Документ, Операция
Когда в контроллере добавляю в базу документ, то все нормально
.......
db.Документы.Add(документ);
db.SaveChanges();

Но когда пытаюсь записать несколько сущностей:
db.Документы.Add(документ);
Операция log = new Операция("Добавление документа", "Название документа - "+документ.Название);
db.Операции.Add(log); //Тут ошибка
db.SaveChanges();

то возникает ошибка : "На объект сущности не могут ссылаться несколько экземпляров интерфейса IEntityChangeTracker"
PS пожалуйста, ничего не говорить про русские названия переменных.
  • Вопрос задан
  • 4533 просмотра
Решения вопроса 1
SvetlyiAkaPro
@SvetlyiAkaPro Автор вопроса
какой именно?
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace FinCooperation.Models
{
    public class Документ
    {
        [Key]
        public int ДокументID { get; set; }
        [Required]
        public string Название { get; set; }
        public System.DateTime Добавлен { get; set; }
        public System.DateTime Обновлен { get; set; }
        public byte[] ФайлДокумента { get; set; }
        [HiddenInput(DisplayValue = false)]
        public string MIMEтип { get; set; }

        public virtual Кооператив Кооператив { set; get; }
    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace FinCooperation.Models
{
    public class Операция
    {
        [Key]
        public int ОперацияID { get; set; }
        [Required]
        public string Наименование { get; set; }
        [Required]
        public System.DateTime Дата { get; set; }
        public string Детали { get; set; }
        public Операция(string name, string details)
        {
            this.Наименование = name;
            this.Дата = DateTime.Now;
            this.Детали = details;
            this.Пользователь = (Пользователь)HttpContext.Current.Session["User"];
        }
        public Операция(string name)
        {
            this.Наименование = name;
            this.Дата = DateTime.Now;
            this.Пользователь = (Пользователь)HttpContext.Current.Session["User"];
        }
        //Пользователь
        [Required]
        public virtual Пользователь Пользователь { get; set; }
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@coolfusion
Дайте больше информации.
А пока вот stackoverflow.com/questions/2639384/error-an-entit...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы