2014-10-06 2 views
0

У меня есть 2 контроллера и репозитории, подарки и реестры. У подарка может быть реестр, и когда я пытаюсь создать новый подарок, я получаю сообщение об ошибке «Объект сущности не может ссылаться на несколько экземпляров IEntityChangeTracker».«Объект сущности не может ссылаться на несколько экземпляров IEntityChangeTracker» при сохранении связанного объекта

Подарок имеет следующие атрибуты:

public class Gift 
{ 
    public int GiftId { get; set; } 

    public string Name { get; set; } 

    public Registry Registry { get; set; } 
} 

Мой код, чтобы добавить подарок выглядит следующим образом:

В контроллере:

private IGiftRepository _giftRepository; 
    private IAccountRepository _accountRepository; 

    public GiftController() 
    { 
     this._giftRepository = new GiftRepository(new ApplicationDbContext()); 
     this._accountRepository = new AccountRepository(new ApplicationDbContext()); 
    } 

    public GiftController(IGiftRepository giftRepository) 
    { 
     this._giftRepository = giftRepository; 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Create(Gift gift) 
    { 
     if (ModelState.IsValid) 
     { 
      Registry registry = _accountRepository.GetLoggedInRegistry(User.Identity.GetUserId()); 

      gift.Registry = registry; 

      await _giftRepository.AddGiftAsync(gift); 

      return RedirectToAction("Home", "Admin"); 
     } 

     return View(gift); 
    } 

А вот код в хранилище:

public async Task<bool> AddGiftAsync(Gift gift) 
    { 
     try 
     { 
      _context.Gifts.Add(gift); 
      await _context.SaveChangesAsync(); 
     } 
     catch (Exception) 
     { 
      return false; 
     } 

     return true; 
    } 

В _content.Gifts.Add (подарок) Я получаю следующую ошибку: «Объект сущности не может ссылаться на несколько экземпляров IEntityChangeTracker». который я понимаю, объясняется тем, как я настроил свои контексты, но я не уверен, какие изменения мне нужно сделать, чтобы заставить это работать.

ответ

0

Попытки инициализировать хранилища, как это:

public GiftController() 
{ 
    var context = new ApplicationDbContext(); 
    this._giftRepository = new GiftRepository(context); 
    this._accountRepository = new AccountRepository(context); 
} 
Смежные вопросы