Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
主键上的C#EF导航属性_C#_Entity Framework - Fatal编程技术网

主键上的C#EF导航属性

主键上的C#EF导航属性,c#,entity-framework,C#,Entity Framework,我对实体框架的了解有限,并且遇到了一些关于对象关系的问题。我拥有以下实体: 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 Res

我对实体框架的了解有限,并且遇到了一些关于对象关系的问题。我拥有以下实体:

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; }
}
公共类经销商
{
[关键]
公共int Id{get;set;}
公共字符串名称{get;set;}
公共转销商级别?转销商级别{get;set;}
公共转售商级别?HosterLevel{get;set;}
公共转销商邮件{get;set;}
公共虚拟可观察收集邮件{get;set;}
公共转销商()
{
邮件=新的ObservableCollection();
}
}
公共类转售商
{
[密钥,ForeignKey(“转销商”)]
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串邮件{get;set;}
公共字符串显示
{
得到
{
返回String.Format(“{0}”,名称,邮件);
}
}
公共虚拟转售商转售商{get;set;}
}
我试图实现以下两个关系:

  • 经销商和邮件之间的一对多: 基本上是一个链接到经销商的邮件列表

  • 一对一关系 从下拉列表中选择经销商的邮件。它可能只是邮件的Id,但我想给它附加一个导航属性


我该怎么做呢?

首先,不要在模型中使用
ObservableCollection
,因为这种类型用于与UI交互(不应该直接从模型中执行)

关于两个问题:

对于1: 只需为
分销商电子邮件
设置一个虚拟集合。这意味着您的模型将如下所示:

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

使用上述设置,您的所有数据关系都可以正常工作吗?
 [Key, ForeignKey("Reseller")]
  public int Id { get; set; }
  public Reseller Reseller { get; set; }