Некорректное объединение таблиц в linq - PullRequest
1 голос
/ 21 марта 2011

У меня есть эти объекты:

Account
-IdAccount: 1
-Money: 20
-IdInfo: 2

Navigation Property:  Info

Info
-IdInfo: 2
-Info: hi

Navigation Property: Account

Когда я делаю что-то подобное, используя linq

var account = storeDB.Accounts.Include("Info").Single( a => a.IdInfo == 2 );

Это выполнит объединение с IdAccount = 1 и IdInfo = 1 вместо 2. Кто-нибудь знает другой способ, которым я могу сделать запрос? Я посмотрел на select from bla bla, но я не знаю, как поместить это в объект, так как я создал Account.cs и Info.cs, такие как ASP MVC3 учебник музыки.

У меня такое ощущение, что оно делает какое-то естественное соединение, и поэтому оно связывает оба идентификатора с номером 1.

Я проверял это много часов и не смог решить эту проблему, любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 21 марта 2011

Если вы используете Linq-to-Sql, попробуйте:

using (var storeDB = new DataContext())
{
    var options = new DataLoadOptions();
    options.LoadWith<Accounts>(a => a.Info);
    db.LoadOptions = options;

    var account = from a in storeDB.Accounts
                  where a.IdInfo == 2
                  select a;
}

Этот ответ предоставит некоторую дополнительную информацию: Как создать запрос LINQ to Entities для прямой загрузки дочерних объектов вместо вызова свойства Reference или Load ()

0 голосов
/ 21 марта 2011

Пожалуйста, попробуйте использовать .Where( a => a.IdInfo == 2).Single();

...