2010-01-29 1 views
0

Мне нужно понизить сайт с .NET 4 beta 2 до .NET 3.5.Есть ли опрятный обходной путь к отсутствию столбцов идентификации внешнего ключа в Entity Framework 3.5?

Наибольшее препятствие - это все значения идентификатора внешнего ключа. Я ссылаюсь на/lookup, так как это не поддерживается в EF 3.5.

Кто-нибудь знает о разумных условиях для этого?

Пример того, что я имею в виду:

contacts.Where(contact => contact.TypeGuid == guid) 

[TypeGuid] является FK к [ContactTypes], так что я получаю объект [ContactType], что я могу получить доступ, если я использую .Include("ContactType"), но не прямой идентификатор.

+0

Пожалуйста, покажите код, который вы пытаетесь заменить. Из вашего вопроса неясно, что вы пытаетесь сделать. На этом сайте есть * много вопросов о FK в EF 1; Предполагаю, вы делаете что-то другое? –

+0

Достаточно честный. Я обновил вопрос – joshcomley

ответ

1

Ваш пример запроса "просто работает" в EF 1, если задать свойство ID:

var someContact = Context.Contacts.Where(c => c.ContactType.Id == guid); 

Это в LINQ к Entities.

В пространстве объекта, вы можете обратиться к EntityKey:

var someContact = contacts.Where(c => { var ek = c.ContactTypeReference.EntityKey; 
             if (ek == null) return false; 
             return ek.EntityKeyValues[0].Value.Equals(guid); 
             });