2009-08-31 7 views
0

У меня есть таблица Админы, которая создает связь между пользователями и Locations:нагрузки значение внешнего ключа с помощью LINQ к объектам

ID - numeric (PK) 
UserId - uniqueidentifier (FK to UserId in aspnet_Users table) 
LocationId - numeric 

Теперь я хочу, чтобы выполнить команду:

IQueryable<decimal> location_ids = (from m in _db.Admins 
            where m.UserId.Equals(new Guid("c5d3dc0e-81e6-4d6b-a9c3-faa802e10b7d")) && m.LocationId.Equals(conf.umisteni.Budova.ID) 
            select m.LocationId); 

Но для некоторых Причина (я думаю, что UserId является FK). m.UserId не может быть разрешен. Так что я пытался использовать

m.aspnet_UsersReference.Value.UserId 

Но тогда оператор

if (!location_ids.Any()) 

решение терпит неудачу с исключением

System.NotSupportedException: The specified type member 'aspnet_UsersReference' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported. 

Что я должен сделать для того, чтобы получить перечислимую список LocationIds?

Заранее спасибо.

ответ

2

Вы пропускаете «Пользователи» и точка:

var location_ids = (from m in _db.Admins 
        where m.Users.UserId.Equals( 
         new Guid("c5d3dc0e-81e6-4d6b-a9c3-faa802e10b7d")) && 
         m.LocationId.Equals(conf.umisteni.Budova.ID) 
        select m.LocationId); 

По существу, вы должны использовать отношения «пользователей» непосредственно.

+0

Очевидно, я забыл объяснить таблицу aspnet_Users. Главным его атрибутом является UserId - PK и uniqueidentifier. Нет, точки нет. – Trimack

+0

ОК, соедините точки, затем. У вас есть отношения с собственностью Пользователи. Суть моего ответа в том, что вы его не используете. Я догадался, что имя ключа и отношения неверны, но ответ по-прежнему в правильном направлении: * Используйте отношения вместо того, чтобы обходить его. * Тогда ваш запрос будет работать в LINQ to Entities. Тем не менее, я уточню свой ответ с другой догадкой о правильных именах. –

Смежные вопросы