2013-04-25 63 views
1

我试图实现SimpleMembership实体,所以我可以控制它的某些方面,这里是我创建的类:Simplemembership webpages_UsersInRoles代码首先FK错误

[Table("webpages_Roles")] 
public class Role 
{ 
    public Role() 
    { 
     UsersInRoles = new List<UsersInRole>(); 
    } 

    [Key] 
    public int RoleId { get; set; } 
    [StringLength(256)] 
    public string RoleName { get; set; } 

    //public ICollection<Membership> Members { get; set; } 

    [ForeignKey("RoleId")] 
    public ICollection<UsersInRole> UsersInRoles { get; set; } 
} 
[Table("webpages_UsersInRoles")] 
public class UsersInRole 
{ 
    [Key, Column(Order = 0)] 
    public int RoleId { get; set; } 

    [Key, Column(Order = 1)] 
    public int UserId { get; set; } 

    [Column("RoleId"), InverseProperty("UsersInRoles")] 
    public Role Roles { get; set; } 

    [Column("UserId"), InverseProperty("UsersInRoles")] 
    public Membership Members { get; set; } 



} 
[Table("webpages_Membership")] 
public class Membership 
{ 
    public Membership() 
    { 
     //Roles = new List<Role>(); 
     OAuthMemberships = new List<OAuthMembership>(); 
     UsersInRoles = new List<UsersInRole>(); 
    } 

    [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int UserId { get; set; } 
    public DateTime? CreateDate { get; set; } 
    [StringLength(128)] 
    public string ConfirmationToken { get; set; } 
    public bool? IsConfirmed { get; set; } 
    public DateTime? LastPasswordFailureDate { get; set; } 
    public int PasswordFailuresSinceLastSuccess { get; set; } 
    [Required, StringLength(128)] 
    public string Password { get; set; } 
    public DateTime? PasswordChangedDate { get; set; } 
    [Required, StringLength(128)] 
    public string PasswordSalt { get; set; } 
    [StringLength(128)] 
    public string PasswordVerificationToken { get; set; } 
    public DateTime? PasswordVerificationTokenExpirationDate { get; set; } 
    //public ICollection<Role> Roles { get; set; } 

    [ForeignKey("UserId")] 
    public ICollection<OAuthMembership> OAuthMemberships { get; set; } 

    [ForeignKey("UserId")] 
    public ICollection<UsersInRole> UsersInRoles { get; set; } 
} 

[Table("UserProfile")] 
public class UserProfile 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
    public bool Status { get; set; } 
    public string EmailId { get; set; } 
} 

现在,当我尝试插入新用户,它被正确插入表userProfile和webpages_Membership,但只要应用程序试图为用户分配角色,抛出异常

* INSERT语句与FOREIGN KEY约束“FK_dbo.webpages_UsersInRoles_dbo”冲突。 webpages_Membership_UserId”。冲突发生在数据库“PCSPI”,表“dbo.webpages_Membership”,列'UserId'。 该声明已被终止。*

我试图用sql server手动插入它并插入,但只要我尝试在我的应用程序上执行它,就会抛出异常。

我在做什么错?模型没有很好的定义? 在此先感谢

回答

0

您没有阅读评论。我认为你从那里得到了该模式:http://blog.spontaneouspublicity.com/including-asp-net-simple-membership-tables-as-part-of-your-entity-framework-model

下面的评论之一说模式是不正确的,并给出了正确的架构,我正在使用它的defo。这里我不想重复。转到上述网站并再次检查。 (由Senad Karic评论)

P.S.别担心,我第一次使用它时也是这样做的:)

+0

谢谢你会记住! – oskar132 2013-04-27 17:38:17

+0

链接似乎被破坏。 – 2015-01-31 22:43:09

+0

我已联系该页面的作者,不幸的是内容丢失,缺少备份。这意味着,应该删除整个问题,因为这是由于现在删除的文章中的错误导致的。 – 2015-04-26 17:06:02