我无法弄清楚我在做什么错。MVC的新手和Entity的新手,所以我知道这阻碍了我。每当我调用AuthUser时,AuthRole始终一无是处,因此我最终会做类似的事情:
authuser.AuthRole = db.AuthRoleSet.Find(2) 'AuthRoleID of 2 = User
我觉得这很笨拙。如何获得我的财产,以便与用户实际取得角色?
这是我的类结构:公共类AuthUser'类Globals Dim db作为新的AuthUserContext
'Properties
Public Property AuthUserID() As Integer
<Required()> _
<Display(Name:="User Name")> _
<DomainUserValidation()> _
Public Property UserName() As String
<Display(Name:="Current Role")> _
Public Property AuthRole As AuthRole
End Class
Public Class AuthRole
Public Property AuthRoleID() As Integer
<Required()> _
<Display(Name:="Role Name")> _
Public Property RoleName() As String
<Required()> _
<Display(Name:="Is Administrator")> _
Public Property isAdministrator() As Boolean
<Required()> _
<Display(Name:="Is Active")> _
Public Property isActive() As Boolean
<Required()> _
Public Property AuthUser As ICollection(Of AuthUser)
End Class
Public Class AuthUserContext
Inherits DbContext
Public Property AuthUserSet() As DbSet(Of AuthUser)
Public Property AuthRoleSet() As DbSet(Of AuthRole)
End Class
您有2个选项(对不起的c#语法):
1-AuthRole
必要时延迟加载-为此,您的AuthRole
媒体资源需要声明为virtual
public virtual AuthRole {get;set;}
现在,当/如果您尝试访问AuthRole
,EF将从数据库中获取它。为此,您需要DbContext.Configuration.LazyLoadEnabled = true
另一种选择是通过使用如下查询来急于加载它:
var myUserWithRole = myContext.AuthUsers.Include("AuthRole").FirstOrDefault(x=>x.Id == userId);
这将从数据库中获取用户和角色。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句