我正在尝试构建一个使用从System.DirectoryServices.AccountManagement
派生的模型类的asp.net MVC应用程序。我决定使用Entity Framework代码优先方法。
现在的问题是,当尝试使用脚手架创建控制器时,模型类似乎错过了ID
。我认为应该可以给派生类一个ID
属性(带[Key]
属性),但错误消息仍然说其中一个基类错过了ID
属性。问题是我无法修改基类。
这是我的模特课程之一:
[DirectoryRdnPrefix("CN")]
[DirectoryObjectClass("user")]
public class ADUser : UserPrincipal
{
[Key]
public int ID { get; set; }
public ADUser() : base(new PrincipalContext(ContextType.Domain, "mydomain"))
{
}
public ADUser(PrincipalContext context) : base(context) { }
public ADUser(PrincipalContext context, string SamAccountName, string password, bool enabled) :
base(context, SamAccountName, password, enabled)
{ }
public static new ADUser FindByIdentity(PrincipalContext context, string identity)
{
return (ADUser)FindByIdentityWithType(context, typeof(ADUser), identity);
}
public static new ADUser FindByIdentity(PrincipalContext context, IdentityType identityType, string identity)
{
return (ADUser)FindByIdentityWithType(context, typeof(ADUser), identityType, identity);
}
}
这是尝试使用ADUser作为模型创建控制器时的错误消息:
运行所选代码生成器时出错:
'无法检索'EF_Hirarchy.Models.ADUser'的元数据。一个或 在模型生成期间检测到更多验证错误:
EF_Hirarchy.Models.Principal :: EntityType'Principal'没有密钥 定义。定义此EntityType的密钥。
Principals:EntityType:EntitySet'Principals'基于类型 'Principal'没有定义键。
首先,我没有班级EF_Hirarchy.Models.Principal
。我的ADUser
类派生自UserPrincipal
命名空间中的System.DirectoryServices.AccountManagement
(然后从AuthenticablePrincipal
派生,派生自同一名称空间中的Principal
其次,我的ADUser
有一个带有ID
属性的属性[Key]
,那么这里缺少什么?
我感谢任何帮助。