Ошибка проверки с использованием AsNoTracking - PullRequest
0 голосов
/ 26 октября 2011

Я пытаюсь добавить новую сущность в моем контексте так:

article.Id = 1;
var rede = from r in mycontext.Redevable.AsNoTracking()
           where r.Matricule == "0001414"
           select r;

article.Redevable = rede.First<Redevable>();
...

mycontext.Article.Add(article);
mycontext.SaveChanges();

и я получаю исключение DbEntityValidationException, в котором говорится, что Redevable является обязательным, поскольку свойство "Redevable" является маркерным, как требуется.

Работает нормально, если я удалю «AsNoTracking», но производительность очень плохая.

Не могли бы вы мне помочь?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 27 октября 2011

Вы можете создать свойство Fk только с идентификатором, подобным этому:

public int RedevableId { get; set; }

public Redevable Redevable{ get; set; }

, а затем установить его из экземпляра Redevable:

article.RedevableId = rede.First<Redevable>().Id;  

, затем сохранить ваши изменения:

mycontext.Article.Add(article);      
mycontext.SaveChanges();
0 голосов
/ 07 мая 2015

AsNoTracking () означает, что вы не можете обновить эти объекты, не подключая их к графику отслеживания.Подробнее см.

// Attaches the entity and then save
context.Entry(article).State = EntityState.Modified;
context.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...