저는 여러 시간 동안 여러 가지 해결책을 시도해 왔지만 지금은 이해할 수 없습니다. 이 모든 테이블복합 키가로드되지 않음 모든 관련 엔티티
public class UsersInRole
{
[Key]
public long UserId { get; set; }
[Required]
public UserProfile UserProfile { get; set; }
[Key]
public long RoleId { get; set; }
[Required]
public webpages_Role Role { get; set; }
}
때 내가 스크립트 아웃 올바른 것 :
CREATE TABLE [dbo].[UsersInRoles](
[UserId] [bigint] NOT NULL,
[RoleId] [bigint] NOT NULL,
CONSTRAINT [PK_dbo.UsersInRoles] PRIMARY KEY CLUSTERED
(
[UserId] ASC,
[RoleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[UsersInRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.UsersInRoles_dbo.UserProfile_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[UserProfile] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[UsersInRoles] CHECK CONSTRAINT [FK_dbo.UsersInRoles_dbo.UserProfile_UserId]
GO
ALTER TABLE [dbo].[UsersInRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.UsersInRoles_dbo.Roles_RoleId] FOREIGN KEY([RoleId])
REFERENCES [dbo].[Roles] ([RoleId])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[UsersInRoles] CHECK CONSTRAINT [FK_dbo.UsersInRoles_dbo.Roles_RoleId]
GO
이상한 행동을 나는 그래서 역할 테이블은 다음과 같이 첫 번째 코드를 사용하여 정의가 시스템에서 사용자 지정 멤버 자격 공급자를 사용하고 있습니다 UserProfile 속성 만 채워집니다. 컨텍스트를 통해 직접 UsersInRole 객체를로드하면 동일한 동작이 나타납니다.
var userInRoles = context.UsersInRoles.ToList();
UserProfile 속성은로드되었지만 Role 속성은 항상 null입니다.
HasKey(compKey => new { compKey.UserId, compKey.RoleId });
나는 지금까지 내가이 잘 작동해야한다 말할 수있는 이상 확인하고 관계 이상 및했습니다
UsersInRole 엔티티 매핑이 복합 키가 있습니다. UserProfile id 필드는 Id이고 역할 ID 필드는 Relationship 상태로 RoleId입니다. 나는 지금 나무를위한 나무를 볼 수 없다!
모든 아이디어를 얻을 수 있습니다.
만약 당신이 context.UsersInRoles.Include (ur => ur.UserProfile) .Include (ur => ur.Role) .ToList() 역할을 여전히 null입니까? – Mones
정확한 방법을 찾을 수 없지만 이렇게했습니다 : 'context.UsersInRoles.Include ("UserProfile"). Include ("Role") .ToList(); 그리고 이제 Role 속성이 채워집니다! 그러나 UserProfile 개체는 프록시이지만 역할은 구체적인 개체입니다 ... – Jammer
위의 메서드의 서명에 대해 System.Data.Entity 'using'절을 추가해야합니다. – Mones