这是我的应用程序模型:
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代码)。我该如何定义关系? 什么是最佳做法?
我希望它足够清楚,它与其他电子邮件应用程序的工作方式类似。
谢谢!
答案 0 :(得分:0)
您可以通过两种方式解决此问题
第一个解决方案:与您提出的相同,称为递归关系&#34;自我关系&#34;,以存储对父电子邮件&#34;以前的电子邮件&#34;在你的情况下如下:
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;}
}
我希望这会对你有所帮助