身份的双重外键困境

时间:2015-03-20 04:58:26

标签: c# asp.net-mvc entity-framework ef-code-first asp.net-identity

我有一个ASP.NET MVC项目,我正在为我的用户使用Identity框架。

该项目涉及CustomersAgents,它们只是常规身份用户的不同角色。

名为Orders的表同时属于CustomerAgent

public class Order
{
    [ForeignKey("User")]
    public int CustomerID { get; set; }
    public virtual List<ApplicationUser> Customer { get; set; }

    [ForeignKey("User")]
    public int AgentID { get; set; }
    public virtual List<ApplicationUser> Agent { get; set; }
}

但是这个模型定义在使用add-migration时不会起作用并产生错误的SQL。

首先使用代码完成此操作的最佳方法是什么?我应该显式定义外键,还是最好创建连接表以避免对IdentityUser表的2外键引用?

2 个答案:

答案 0 :(得分:0)

我用Order的这个类定义修复了这个:

public class Order
{
    public int OrderID { get; set; }

    public virtual ApplicationUser Customer { get; set; }
    public virtual ApplicationUser Agent { get; set; }

}

实体用这个正确地计算出其余部分。

答案 1 :(得分:0)

一个订单只能属于一个客户和一个代理,因此无需使用Collection for Customer和Agent。代替

 public class Order
{
    [ForeignKey("Customer")]
    public int CustomerID { get; set; }
    public virtual ApplicationUser Customer { get; set; }

    [ForeignKey("Agent")]
    public int AgentID { get; set; }
    public virtual ApplicationUser Agent { get; set; }
}