2014-01-29 3 views
2

У меня есть таблица, в которой я пытаюсь запроса с помощью Linq к SQLповторяющихся записей, когда они должны быть уникальными

таблица очень проста она имеет 5 колонок:

- PersonID 
- ADID 
- Name 
- PlaceID 
- PlaceName 

У меня есть 2 записей в моем столе, и они имеют те же PersonId в обеих записях, но разные PlaceID и топоним значений:

001 | 001 | Person X | P01 | Place 1 
001 | 001 | Person X | P02 | Place 2 

Когда я запрашиваю это в SQL я получаю именно эти 2 строки:

select * from myTable where PersonID = '001' 

Однако, когда я пытаюсь сделать это в LINQ:

List<myTable> PersonInfo = (from myInfo in db.myTable 
where myInfo.PersonID == "001" 
select myInfo).ToList(); 

Я получаю отсчет 2 в PersonInfo, но они же рекорд. Что я делаю неправильно?

+0

Как вы выводите данные или проверяете с помощью отладчика? –

+0

@KeithPayne - да, я использую отладчик – webdad3

+0

Это головной скребок. В 'PersonInfo' есть что-то странное? Где бы ни находилась проблема, она, похоже, не указана в этом коде, который вы опубликовали. Возможно, опубликуйте намного больше кода, и что-то выскочит. –

ответ

1

Что я узнал, так это то, что для первой структуры Entity Framework необходим первичный ключ для правильной работы. После изучения таблицы, которую я использовал, я узнал, что есть первичный ключ, но это был комбо-ключ. Поэтому, когда я помещал «Ключи сущностей» в оба столбца, мой оператор select возвращал правильные данные.

Благодаря @GertArnold и всем остальным, которые помогли мне решить эту проблему!

+1

Тем не менее, я думаю, вы должны нормализовать модель данных. Что делать, если вы хотите получить только людей? –

Смежные вопросы