0
我一直在嘗試不同的解決方案,以此爲幾個小時,我只是無法弄清楚。我使用的是自定義的成員提供一個系統,這樣必須首先使用代碼這樣的角色表中定義:複合鍵不加載所有相關實體
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屬性始終爲空。
的UsersInRole實體具有映射該組合鍵:
HasKey(compKey => new { compKey.UserId, compKey.RoleId });
我檢查了一遍又一遍的關係,據我可以告訴這應該是工作的罰款。 UserProfile id字段是Id,角色id字段是RoleId作爲關係狀態。現在我看不到樹木了!
任何想法,將不勝感激。
如果你context.UsersInRoles.Include(UR => ur.UserProfile).INCLUDE(UR => ur.Role).ToList()是角色還是空? – Mones
我找不到你所提到的具體方法,但我這樣做:'context.UsersInRoles.Include(「用戶配置」)包括(「角色」)ToList();現在填充'和角色屬性。!但是,用戶配置對象是代理,但作用是一個具體的對象... – Jammer
對於方法的簽名我使用上面必須添加System.Data.Entity的「使用」的條款。 – Mones