主键上的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; }