主键上的C#EF导航属性
问题描述:
我对实体框架的知识有限,并且遇到与我的对象关系有关的一些问题。我有以下实体:主键上的C#EF导航属性
public class Reseller
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public ResellerLevel? ResellerLevel { get; set; }
public ResellerLevel? HosterLevel { get; set; }
public ResellerMail Mail { get; set; }
public virtual ObservableCollection<ResellerMail> Mails { get; set; }
public Reseller()
{
Mails = new ObservableCollection<ResellerMail>();
}
}
public class ResellerMail
{
[Key, ForeignKey("Reseller")]
public int Id { get; set; }
public string Name { get; set; }
public string Mail { get; set; }
public string Display
{
get
{
return String.Format("{0} <{1}>", Name, Mail);
}
}
public virtual Reseller Reseller { get; set; }
}
我想达到以下两个关系:
一对许多经销商和邮件之间: 基本上链接到邮件列表经销商。
一对一关系 从下拉列表中选择经销商的邮件。它可能只是邮件的Id,但我想附加一个导航属性。
我该怎么去做这件事?
答
首先,请勿在模型中使用ObservableCollection
,因为此类型用于与UI进行交互(不应直接从模型中进行交互)。
至于两个问题:
为1: 只需设置一个虚拟集合为ResellerEmail
。这意味着您的模型将如下所示:
public class Reseller
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public ResellerLevel? ResellerLevel { get; set; }
public ResellerLevel? HosterLevel { get; set; }
public virtual ICollection<ResellerMail> Mails { get; set; }
public Reseller()
{
Mails = new ICollection<ResellerMail>();
}
}
对于no2。您可以在ForeignKey
以下有Reseller
类型的对象。你可以尝试这样的:
[Key, ForeignKey("Reseller")]
public int Id { get; set; }
public Reseller Reseller { get; set; }
你所有的数据关系工作正常与上述设置? – Sampath