繁体   English   中英

主键上的C#EF导航属性

[英]C# EF Navigation Properties on Primary Key

我对实体框架的知识有限,并且在对象关系方面遇到了一些问题。 我有以下实体:

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; }
}

我正在尝试建立以下2种关系:

  • 代理商和邮件之间一对多:基本上是链接到代理商的邮件列表。

  • 一对一关系从下拉列表中选择经销商的邮件。 它可能只是邮件的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>();
  }
}

对于第二。 您可能在ForeignKey下有一个Reseller类型的对象。 您可以尝试如下操作:

 [Key, ForeignKey("Reseller")]
  public int Id { get; set; }
  public Reseller Reseller { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM