Вместо этого:
var lastCertification = db.terminalCertifications
.Include("TimeInfo")
.Include("GomrokJustifications")
.Where(item=>item.TerminalCertificationID==terminalCertification.TerminalCertificationID)
.ToList();
if (lastCertification.Count==0)
throw new TerminalCertificationNotFoundException(terminalCertification);
вы можете просто сделать это:
var lastCertification = db.terminalCertifications
.Include("TimeInfo")
.Include("GomrokJustifications")
.Where(item=>item.TerminalCertificationID==terminalCertification.TerminalCertificationID)
.FirstOrDefault();
if (lastCertification == null)
throw new TerminalCertificationNotFoundException(terminalCertification);
Сначала выдается исключение, если в коллекции нет элементов, поэтому если вы нене заботясь об исключении исключения сертификата терминала, вы можете даже удалить это пользовательское исключение.Кажется, ваша логика даже предполагает, что в возвращаемом списке будет только один элемент, так что вы даже можете использовать Single ().Это выражает больше того, чего вы хотите достичь, по сравнению с вызовом tolist и последующим извлечением первого элемента.
- После тщательного изучения вашего кода я на самом деле не понимаю, чего вы пытаетесь достичь.У вас есть существующий объект терминальной сертификации, с которого вы начинаете, а затем снова получаете его в этом первом запросе, почему?Затем вы берете timeinfo из концептуально той же сущности (потому что вы сделали get by id) в ту, которую вы получаете в качестве входного параметра.Почему бы не продолжить работу над тем, который был извлечен из базы данных?Затем вы отсоединяете сущность, полученную из базы данных, почему?И продолжить работу с входным терминалом сертификации.Я думаю, что вам нужно немного внимательнее взглянуть на документацию структуры сущностей о состоянии сущности и т. Д. Взгляните на ApplyCurrentValues и отсоединение и присоединение объектов здесь: http://msdn.microsoft.com/en-us/library/bb896271.aspx
Нам понадобятся ещеинформация, чтобы помочь вам вместе.