gpt4 book ai didi

c# - Entity Framework 一对多自引用关系

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

这是我的应用程序模型:

public class Email
{
public int Id {get; set;}

public string Content {get; set;}

public string Address {get; set;}
}

我想添加回复电子邮件的选项(电子邮件链 - 回复)应该是这样的吗?:

public class Email
{
public int Id {get; set;}

public string Content {get; set;}

public string Address {get; set;}

public int? PreviousEmailId {get; set;}

public virtual Email PreviousEmail {get; set;}

public virtual List<Email> Responses {get; set;}
}

回复邮件可以是对另一封邮件的回复等等..就像一个电子邮件应用程序

我希望有可能获得一封电子邮件并向我的客户显示它所引用的所有电子邮件,作为一个链。就像在真实的电子邮件应用程序中一样,删除电子邮件时,也应删除所有链。

谁能告诉我应该如何定义模型(我首先使用 EF 6 代码)。我应该如何定义关系?最佳做法是什么?

我希望它足够清楚,它与其他电子邮件应用程序的工作原理类似。

谢谢!

最佳答案

你可以通过两种方式解决这个问题

第一个解决方案:与您提出的称为递归关系“ self 关系”的建议相同,在您的情况下存储对父电子邮件“上一封电子邮件”的可选引用,如下所示:

public class Email
{
public int Id {get; set;}
public int? PrevousEmailId {get; set;}
// other properties

public virtual Email PreviousEmail{get;set;}
}

第二个解决方案:将关系存储在一个单独的表中,这将允许您同时响应多个收件人,例如递归关系或图关系的一般解决方案如下:

public class Email
{
public int Id {get; set;}
// other properties
}

public class EmailResponse
{
public int EmailId {get; set;}
public int PreviousEmailId {get; set;}

public virtual Email Email {get; set;}
public virtual Email PreviousEmail {get; set;}
}

希望对你有帮助

关于c# - Entity Framework 一对多自引用关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36505818/

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