Entity Framework 7 RC1 Левое внешнее соединение повторяющихся строк

Я использую левое внешнее соединение LINQ в Entity Framework 7 RC1. Нам пришлось использовать обходной путь, поскольку левые соединения не реализованы должным образом, см. Левое внешнее соединение с ядром Entity Framework

var customers = from customer in _db.Customer
                join postcode in _db.Postcode
                    on customer.PostcodeID equals postcode.PostcodeID into custPCTmp
                from custPC in custPCTmp.DefaultIfEmpty()
                select new
                {
                    // Workaround for EF7 RC1.
                    Customer = customer,
                    CustPC = custPC
                };

// Workaround for EF7 RC1.
model.CustomersList = new List<CustomerListItemViewModel>();
foreach (var cust in customers)
{
    CustomerListItemViewModel custVM = new CustomerListItemViewModel()
    {
        CustomerID = cust.Customer.CustomerID,
        Name = cust.Customer.Name,
        Address = cust.Customer.Address,            
        Town = cust.CustPC == null ? string.Empty : cust.CustPC.Town,
        Postcode = cust.CustPC == null ? string.Empty : cust.CustPC.Postcode
    };
    model.CustomersList.Add(custVM);
}

Я ожидаю такого результата (обратите внимание, что первые 3 строки должны иметь один и тот же город и почтовый индекс):

Name    Address     Town    Postcode    
---------------------------------------
Name 1   Address 1   Town 1  Postcode 1

Name 2   Address 2   Town 1  Postcode 1

Name 3   Address 3   Town 1  Postcode 1

Name 4   Address 4   Town 4  Postcode 4

Однако я получаю следующий результат (трижды дублирование первой записи):

Name    Address     Town    Postcode    
--------------------------------------
Name 1  Address 1   Town 1  Postcode 1

Name 1  Address 1   Town 1  Postcode 1

Name 1  Address 1   Town 1  Postcode 1

Name 4  Address 4   Town 4  Postcode 4

Я вижу, что это связано с присоединением клиента с почтовым индексом к PostcodeID, но почему он так дублируется? Данные в базе выглядят нормально.

С уважением,

Расика


person rasika    schedule 14.05.2016    source источник
comment
Кто знает. Если есть одна ошибка, может быть, это другая. Я не слишком впечатлен этим RC1. Я не знаю, зачем вам нужен этот обходной путь. Я надеюсь, что вы не полагаетесь на EF7 для производственного кода.   -  person Gert Arnold    schedule 15.05.2016
comment
Мы пробовали различные подходы, и все это дало нам ошибку «Последовательность не содержит элементов» (см. ссылку в вопросе).   -  person rasika    schedule 15.05.2016
comment
Да, я знаю, почему вам нужен обходной путь технически. Я хотел спросить, зачем вам это нужно для вашего проекта. Разве вы не можете просто оставить это и подождать, пока оно не будет решено?   -  person Gert Arnold    schedule 15.05.2016
comment
Можно, но лучше поскорее найти решение.   -  person rasika    schedule 15.05.2016
comment
Я видел слишком много обходных путей, которые остаются в коде после того, как исходная проблема была исправлена. О них забывают, или люди опасаются изменять рабочий код. Я бы подождал или хотя бы оставил код как должно быть в комментариях. Что касается рассматриваемой проблемы, в EF6 это может произойти, если первичный ключ объекта как его знает EF на самом деле не уникален. Не уверен, что это все еще верно в EF7.   -  person Gert Arnold    schedule 15.05.2016
comment
Да, это очень верно. Спасибо за предложение. Я проверил, определив PK как для клиента, так и для почтового индекса в EF (код, сгенерированный инструментом, по какой-то причине не определил их, несмотря на то, что они были определены в базе данных). Но я все еще получаю ту же проблему, что и раньше.   -  person rasika    schedule 16.05.2016