实体框架代码首先使用System.DirectoryServices.AccountManagement中的派生类

时间:2015-09-17 15:36:04

标签: c# entity-framework inheritance directoryservices

我正在尝试构建一个使用从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],那么这里缺少什么?

我感谢任何帮助。

0 个答案:

没有答案