В Entity Framework результаты отличаются от LINQ to SQL - PullRequest
5 голосов
/ 10 мая 2011

Я впервые использовал LINQ to SQL в своем проекте и использовал следующий оператор:

var ProjectRouteEmails = EmailManagerDAL.Context.ProjectRouteEmails
            .Where(p => p.ProjectID == ProjectID);

Это правильно вернуло три разных электронных письма из представления ProjectRouteEmails. Идентификаторы, возвращенные из таблицы электронных писем: 117, 591 и 610.

Я перешел на LINQ to Entities и использую то же представление и тот же оператор LINQ, но, хотя я получаю три записи, это первая запись, ID 117, которая возвращается три раза.

Я пытался написать утверждение LINQ так:

var ProjectRouteEmails = from p in EmailManagerDAL.Context.ProjectRouteEmails
                                 where p.ProjectID == ProjectID
                                 select p;

но это не имело значения; одна и та же запись возвращалась три раза.

Я зашел в SQL Server Management Studio и выполнил запрос:

select * from ProjectRouteEmails (nolock) 
where ProjectID = 12

и верные три уникальных записи.

Что здесь происходит?

Спасибо!

1 Ответ

5 голосов
/ 10 мая 2011

Убедитесь, что ключ сущности установлен правильно для ProjectRouteEmails в модели данных сущности.Иногда ключи сущностей портятся при импорте представления в модель.

...