Как вы решаете неоднозначность между типами в Linq? - PullRequest
2 голосов
/ 02 февраля 2011

У меня есть два набора сущностей с сущностями с одинаковыми именами и свойствами с одинаковыми именами.Следовательно:

 FormsEntities formEntities2011 = new FormsEntities2011();
 FormsEntities formEntities2010 = new FormsEntities2010();

И у меня есть запросы для каждого:

 // -- Get a list of Clients from the 2010 Database for this agent
 var clients2010Query = from c in formsEntities2010.Clients
                        join ac in formsEntities2010.Agent_Client on c.Client_ID equals ac.Client_ID
                        where ac.Agent_ID == a.Agent_ID
                        orderby c.Client_ID
                        select c;

Но я получаю ошибку в операторе соединения, касающуюся неоднозначности между Clients.Я полагаю, что это потому, что formEntities2011 и formEntities2010 оба имеют Client сущность.

Обычно я бы просто добавил пространство имен, чтобы устранить неоднозначность, но я не знаю, как это сделать в операторе Linq?

Ошибка «Член определен более одного раза» для c.Client_ID и ac.Client_ID

Ответы [ 2 ]

0 голосов
/ 06 мая 2013

Измените пространства имен на объектах, чтобы они стали другими.

0 голосов
/ 02 февраля 2011

Если вы хотите явно назначить тип, попробуйте использовать методы расширения и Cast.

var c2010 = formsEntities2010.Clients
                .Join( formsEntities1010.Agent_Client
                                        .Where( ac => ac.Agent_ID == a.Agent_ID ),
                       c => c.Client_ID,
                       ac => ac.Client_ID,
                       (c,ac) => c )
                .Cast<Forms2010.Client>(); // or whatever namespace you choose

Я был бы удивлен, хотя, если это повлияло на вашу проблему, так как мне кажется, чтовозникают трудности с определением того, какие поля использовать в качестве ключей объединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...