我的Order
班
public class Order
{
[Key]
public int ID { get; set; }
(...)
[ForeignKey("Client")]
public string ClientID { get; set; }
public virtual ApplicationUser Client { get; set; }
[ForeignKey("Trader")]
public string TraderID { get; set; }
public virtual ApplicationUser Trader { get; set; }
[ForeignKey("Driver")]
public string DriverID { get; set; }
public virtual ApplicationUser Driver { get; set; }
}
还有我的MS Identity ApplicationUser
类:
public class ApplicationUser : IdentityUser
{
(...)
public virtual List<Order> Orders { get; set; }
}
如您所见,我希望在Order
模型的特定“角色”中拥有特定用户。我应该如何在ApplicationUser
中编写代码以获取客户,商人和驱动程序的详细列表?我的意思是,我想在数据库中找到用户,然后我想有三个列表,例如AsClient
,AsTrader
和AsDriver
。现在List<Orders>
的计数始终为0。
答案 0 :(得分:1)
使用InversePropertyAttribute
:
public class ApplicationUser : IdentityUser
{
//another stuff...
[InverseProperty("Client")]
public virtual ICollection<Order> AsClient { get; set; }
[InverseProperty("Trader")]
public virtual ICollection<Order> AsTrader { get; set; }
[InverseProperty("Driver")]
public virtual ICollection<Order> AsDriver { get; set; }
}
答案 1 :(得分:0)
我建议您在这里使用一些继承。
因此,您将创建三个扩展ApplicationUser
的类,每个交易者,客户和驱动程序一个。然后在每个这些类上都有订单列表。另外,在Order
类上,将类型从ApplicationUser
更改为适当的子类型。
然后,作为一种继承策略,您可以选择每个层次结构表,并按照this link上的说明进行操作。
希望这会有所帮助。