Проблема в отношениях «многие ко многим» в структуре модели сущностей .net - PullRequest
0 голосов
/ 17 апреля 2011

вот мой код:

var q = (from m in context.aspnet_Users
                     where m.UserName.Equals(username)
                     select new { m, m.aspnet_Roles.SourceRoleName }).FirstOrDefault();

но я получаю ошибку:

Указанный тип члена SourceRoleName не поддерживается в LINQ to Entities. Только инициализаторы, элементы сущности и навигация сущности свойства поддерживаются.

Как я могу решить эту взаимосвязь «многие ко многим», используя интерфейсную таблицу, но .net Framework удаляет интерфейсную таблицу и создает ассоциацию с сопоставлением таблиц, которое является «многие ко многим».

Мне нужно имя роли, как я могу получить его в такой модели?

1 Ответ

2 голосов
/ 17 апреля 2011

Если aspnet_Roles является свойством навигации по коллекции в вашей сущности aspnet_User, а SourceRoleName является сопоставленным свойством вашей сущности aspnet_Role, вы должны переписать его следующим образом:

var q = (from m in context.aspnet_Users
         where m.UserName.Equals(username)
         select new 
             { 
                 m, 
                 m.aspnet_Roles.Select(r => r.SourceRoleName) 
             })
        .FirstOrDefault();

Если ваша SourceRoleNameявляется вычисляемым свойством в вашей сущности aspnet_Role (пользовательское свойство в коде .NET), которую нельзя использовать в запросе linq-to-entity.Вы должны выбрать целую aspnet_Role сущность и затем получить доступ к ее вычисляемому свойству.

...