使用EF Reverse POCO Generator生成的模型时出现问题

时间:2013-11-13 14:13:52

标签: asp.net

我正在使用asp.net默认会员提供商来创建网站。 我使用了'EF Reverse POCO Generator'并获得了一些内置成员资格表的csharp代码,我删除了一些类,只保留了应用程序,成员资格,配置文件,角色和用户。 问题是我无法使用它们,因为在初始化数据库时会抛出异常。 我遇到的第一个例外是抱怨缺少主键,我在主要字段中添加了[Key]注释,问题解决了。

然后我得到第二个错误似乎抱怨丢失外键:

无法确定类型'GoHome.Models.Memberships'和'GoHome.Models.Users'之间关联的主要结束。必须使用关系流畅API或数据注释显式配置此关联的主要结尾。

看起来可以通过添加[ForeignKey]来解决,但之后我仍然得到第三个,我在谷歌找不到解决方案:

*在表'RolesUsers'上引入FOREIGN KEY约束'FK_dbo.RolesUsers_dbo.Users_Users_UserId'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。*

很奇怪,在我看来,根本没有名为'RolesUsers'的桌子。

我只在会员资格和个人资料中分别添加了两个[ForeignKey],导致第三个错误。这是代码:

// Memberships
public class Memberships
{
    //[ForeignKey("Applications")]
    public Guid ApplicationId { get; set; } // ApplicationId
    [Key]
    [ForeignKey("Users")]
    public Guid UserId { get; set; } // UserId (Primary key)
    public string Password { get; set; } // Password
    public int PasswordFormat { get; set; } // PasswordFormat
    public string PasswordSalt { get; set; } // PasswordSalt
    public string Email { get; set; } // Email
    public string PasswordQuestion { get; set; } // PasswordQuestion
    public string PasswordAnswer { get; set; } // PasswordAnswer
    public bool IsApproved { get; set; } // IsApproved
    public bool IsLockedOut { get; set; } // IsLockedOut
    public DateTime CreateDate { get; set; } // CreateDate
    public DateTime LastLoginDate { get; set; } // LastLoginDate
    public DateTime LastPasswordChangedDate { get; set; } // LastPasswordChangedDate
    public DateTime LastLockoutDate { get; set; } // LastLockoutDate
    public int FailedPasswordAttemptCount { get; set; } // FailedPasswordAttemptCount
    public DateTime FailedPasswordAttemptWindowStart { get; set; } // FailedPasswordAttemptWindowStart
    public int FailedPasswordAnswerAttemptCount { get; set; } // FailedPasswordAnswerAttemptCount
    public DateTime FailedPasswordAnswerAttemptWindowsStart { get; set; } // FailedPasswordAnswerAttemptWindowsStart
    public string Comment { get; set; } // Comment

    // Foreign keys
    public virtual Applications Applications { get; set; } //  MembershipApplication
    public virtual Users Users { get; set; } //  MembershipUser
}

// Profiles
public class Profiles
{
    [Key]
    [ForeignKey("Users")]
    public Guid UserId { get; set; } // UserId (Primary key)
    public string PropertyNames { get; set; } // PropertyNames
    public string PropertyValueStrings { get; set; } // PropertyValueStrings
    public byte[] PropertyValueBinary { get; set; } // PropertyValueBinary
    public DateTime LastUpdatedDate { get; set; } // LastUpdatedDate

    // Foreign keys
    public virtual Users Users { get; set; } //  UserProfile
}

0 个答案:

没有答案