2016-10-29 5 views
1

У меня есть запрос linq, который принимает результат из двух таблиц. Но этот запрос не отобразил все результаты. Когда я тестирую его в SQL Server, у меня есть следующее:Как показать все результаты в запросе linq

| mcod | pcod | c_ogrn  | fam_v | im_v | ot_v | idGk 
| 41004 | 10023 | 1027800518063 | Johny | Johnson | Andrew | 3 
| 41004 | 10023 | 1027800518063 | Johny | Johnson | Andrew | 11 

Вы видите, что данные в последнем столбце разные. Но когда я тестирую в linq-запросе, у меня есть этот результат:

| mcod | pcod | c_ogrn  | fam_v | im_v | ot_v | idGk 
| 41004 | 10023 | 1027800518063 | Johny | Johnson | Andrew | 3 
| 41004 | 10023 | 1027800518063 | Johny | Johnson | Andrew | 3 

Почему запросы идентичны, но результаты разные?

Мой C# код:

var fidn = from post in repository.users 
      join meta in repository.usersLG on post.pcod equals meta.pcod 
      where post.fam_v.Trim() == "Johny" && post.actual == 1 
      //where post.fa post.fam_v.Trim() == fambox.Text and post.actual=1 
      select new Final 
          { 
           mcod = post.mcod, 
           pcod = post.pcod, 
           c_ogrn = post.c_ogrn, 
           fam_v = post.fam_v, 
           im_v = post.im_v, 
           ot_v = post.ot_v, 
           idGK = meta.idGK 
          }; 

Мой T-SQL-запрос:

SELECT 
    users.[mcod], users.pcod, [c_ogrn], [fam_v], [im_v], [ot_v], idGk 
FROM 
    [table].[dbo].[users] 
JOIN 
    [table].[dbo].[usersLG] ON users.pcod = usersLG.pcod 
WHERE 
    users.fam_v = 'Johny' 
    AND users.actual = 1 

Веб-страница Asp.net, Entity Framework, C# LINQ, SQL Server

UPDATE мой Классы и первичные ключи:

пользователей:

[Key] 
public string pcod { get; set; } 
public string mcod { get; set; } 
public string c_ogrn { get; set; } 
public string fam_v { get; set; } 
public string im_v { get; set; } 
public string ot_v { get; set; } 
public int actual { get; set; } 

usersLG

[Key] 
public string pcod { get; set; } 
public int idGK { get; set; } 
public string mcod { get; set; } 
public byte actual { get; set; } 

Final

[Key] 
public int idGK { get; set; } 
public string pcod { get; set; } 
public string mcod { get; set; } 
public string c_ogrn { get; set; } 
public string fam_v { get; set; } 
public string im_v { get; set; } 
public string ot_v { get; set; } 
public int actual { get; set; } 
+0

Каковы основные ключи 'users' и' usersLG'? –

+0

Пользователи @GertArnold - pcod. usersLg - pcod. Мне нужно сделать еще один первичный ключ? –

+0

@asdnafn Нет - только в usersLg –

ответ

0

Я решить мою проблему, спасибо Герт Арнольд.
Моя проблема была в том же значении в строках. Поскольку я не определял столбцы id, результаты были идентичными.
Я просто добавляю столбцы id из таблицы в свои классы и добавляю к ним первичные ключи.
Теперь все работает!

0

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

Как только ключи (первичные, иностранные) совпадают, они должны работать.