1

我正在使用 ASP.Net Identity 2。我创建了一个用户,如下所示:

public class User : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
    public virtual Agency Agency { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }
}

用户是代理机构的成员:

public class Agency
{

    public int Id { get; set; }

    public string Name { get; set; }

    public string TaxId { get; set; }

    public List<User> Brokers { get; set; } 
}

用户与代理商具有一对多的关系。创建用户时,我将从数据库中检索代理,然后将其设置AgencyUser. 这就是事情出错的地方。

            var manager = Identity.GetUserManager();
            manager.Create(new User()
            {
                UserName = "chuckconway",
                Email = "chuck@winnemen.com",
                FirstName = "Chuck",
                LastName = "Conway",
                Agency = agency

            }, "123");

ASP.NET Identity 不是引用 Agency 并将主键插入到 User 表中,而是将新的机构记录插入到机构表中,并将它的 id 用于新创建的用户。我最终与两个机构...

4

1 回答 1

3

通常对于 EF 中的一对多关系,您希望在导航属性中包含引用表的 ID(外键),如下所示:

public class User : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
  public int AgencyId { get; set; } //new
  public virtual Agency Agency { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

然后AgencyId在插入/用户创建期间使用,如AgencyID从数据库中检索并将其分配给User

于 2014-04-16T04:09:26.653 回答