У меня есть пользовательский объект (не из модели объекта), у которого есть свойство, которое возвращает коллекцию объектов EF (из модели объекта):
[DataContract]
public class MyEntity
{
[DataMember]
public List<Role> Roles { get; set; }
}
Объекты 'Role' и 'RolePermission' генерируются EF4 из БД.
RolePermission имеет FOREGIN_KEY для Role, и EF4 сгенерировал связь между Role и RolePermission:
Role.RolePermissions --navigate свойство
RolePermission.Role --navigate свойство
Также у меня есть DomainService:
[EnableClientAccess()]
public class MyEntityService : DomainService
{
public List<MyEntity> GetMyEntities()
{
...
myEntityInstance.Roles = <GetRoles>
...
return <collection of MyEntities with Roles>
}
}
Когда я пытаюсь скомпилировать это, я получаю ошибку:
Entity 'UserManager.Web.RolePermission' has a property 'RoleReference' with an unsupported type
Когда я помещаю атрибут [Include] в свойство MyEntity.Roles, я получаю ту же ошибку и эту ошибку:
Property 'Roles' of complex type 'MyEntity' is invalid. Complex types cannot have include members.
когда я удалил ссылку из RolePermission в Role (свойство навигации RolePermission.Role) руками (из модели объекта), я получаю только эту ошибку во время компиляции:
The Entity 'Role' in DomainService 'RolesService' does not have a key defined. Entity types exposed by DomainService operations must have at least one public property marked with the KeyAttribute.
Как я могу разрешить эту ситуацию? Как я могу вернуть свой пользовательский объект (MyEntity) с заполненным свойством Roles из MyEntityService?
Добавлен [key] attr к Role.Metadata и успешная компиляция. Но у клиента нет свойства MyEntity.Roles.