我有一个需要跟踪更改的数据模型。我每月可以对我的模型进行大约100,000次更改/更新。我的模型涉及跟踪任务完成的方式,可以分解为3种基本类型。
我目前拥有这样的模型,但将三明治的类型划分为3个独立的控制器,因为每个三明治的制作方式非常不同:
public class Sandwich
{
public int Id { get; set; }
public int SandwichTypeId { get; set; } //This is an enum type
//About a dozen other properties that define HOW the sandwich gets made
}
我可以像这样拆开它并将它与我的控制器更多匹配:
public class PeanutButterAndJellySandwich
{
public int Id { get; set; }
//No enum sandwich type
//About a dozen other properties that define HOW the sandwich gets made
}
public class HamSandwich
{
public int Id { get; set; }
//No enum sandwich type
//About a dozen other properties that define HOW the sandwich gets made
}
//等
2部分问题:
感谢。
答案 0 :(得分:1)
在EF中,我做了类似于三明治类的子类化,并在特定控制器中使用它们。
另一方面,我通过例如再创建一个字段来处理这样的事情:
public class Sandwich
{
public int? CurrentVersion { get; set; }
public int Id { get; set; }
public int SandwichTypeId { get; set; } //This is an enum type
//About a dozen other properties that define HOW the sandwich gets made
}
这样,单个三明治可以有很多以前的版本,所有这些都指向当前版本。在我的更新例程中,我创建了一个副本(旧版本的CurrentVersion指向原始版本,现在已更新,版本ID)。
这当然要求您更改列出三明治的其他地方,以便仅查找那些不是修订版的地方。
如果您需要立即引用上一个或下一个版本,则可以创建int? PreviousVersion
和/或int? NextVersion
以避免在数据库中进行搜索。