1

我正在使用 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”的表。

我只在 Memberships 和 Profiles 中分别添加了两个 [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
}
4

0 回答 0