gpt4 book ai didi

主键上的 C# EF 导航属性

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:06 25 4
gpt4 key购买 nike

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

对于 2 号。您可以在 ForeignKey 下面有一个 Reseller 类型的对象。你可以尝试这样的事情:

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

关于主键上的 C# EF 导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36862607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com