如何在实体框架代码中首先(INSERT)此表中的数据?

时间:2014-05-27 21:11:09

标签: entity-framework entity-framework-6

-------------------
使用EF 6
-------------------

我有3张桌子:

1)用户

public class Users 
{
    [Key,Required, MaxLength(50)]
    public string UserName { get; set; }

    [Required, MaxLength(128)]
    public string Email { get; set; }

    [Required, MaxLength(128)]
    public string Password { get; set; }

}

2)角色

public class Roles 
{
    [Key,Required, MaxLength(50)]
    public string RoleName { get; set; }

    [MaxLength(50)]
    public string ApplicationName { get; set; }
}

3) UsersInRoles //我的问题。

public class UsersInRoles 
{
    [Key]
    public int id { get; set; }

    [ForeignKey("Users"), Required]
    public string FKUserName { get; set; }
    public virtual Users Users { get; set; }

    [ForeignKey("Roles"), Required]
    public string FKRoleName { get; set; }
    public virtual Roles Roles { get; set; }
}

现在我的问题是如何在UsersInRoles表中插入记录???

我使用以下代码,但不在表中插入任何数据!
甚至不显示任何错误!

    List<UsersInRoles> BUsersInRoles = new List<UsersInRoles>
    {
        new UsersInRoles { FKUserName="User1", FKRoleName="Role1"},
        new UsersInRoles { FKUserName="User2", FKRoleName="Role2"}
    };

    foreach (UsersInRoles BIR in BUsersInRoles)
    {
        db.UsersInRoles.Add(BIR);
    }

    db.SaveChanges();

感谢。

更新我发现了一个错误:

  

INSERT语句与FOREIGN KEY约束冲突   “FK_dbo.UsersInRoles_dbo.Roles_FKRoleName”。冲突发生在   数据库“AriyaRad”,表“dbo.Roles”,列“RoleName”。该   声明已被终止。

1 个答案:

答案 0 :(得分:0)

我解决了我的问题! 原因是我为外键定义了单个字符串值,但尝试插入字符串值列表!

db.UsersInRoles.Add(new UsersInRoles {FKUserName="User1",
                FKRoleName="Role1", ApplicationName="PSCMS"});  
db.SaveChanges();