【发布时间】:2019-01-27 16:20:06
【问题描述】:
假设我有以下实体框架实体:
public class FileDownload
{
[Key]
public int Id { get; set; }
public int FileTypeId { get; set; }
public int FileHeaderId { get; set; }
}
对于每个下载的 FileType,我希望 FileHeaderId 有点像主键。
所以我想要如下结构记录结构:
ID FileTypeId FileHeaderId
1 1 1
2 1 2
3 2 1
4 2 2
5 3 1
6 3 2
7 3 3
8 1 3
9 2 3
10 1 4
是否可以在保存记录时自动设置?
我不想查找最后一个 id 然后将其增加 1。
FileHeaderId 在每个文件中使用,并且对于每种文件类型必须是唯一的。
谢谢
【问题讨论】:
-
为什么要生成客户特定订单号?为什么没有不依赖于客户 ID 的订单号?
-
简短的回答是——很难。您需要有一个唯一的索引来处理不可避免的冲突(以及用于重试的 C# 代码)。您需要进行要避免的查找。您需要考虑边缘情况,例如“如果我删除特定客户的订单会发生什么?” (即订单号重复使用)。这就是为什么大多数系统不能以这种方式工作的原因——它们不使用客户特定订单号。
-
你试过设置 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 属性吗?
-
好的,忘记客户订单 ID。那只是我输入的一个虚拟类来解释问题
-
你为什么“需要”那个?改变“需求”,使用简单、可扩展的设计。此外,实现您想要的任何方式都是特定于数据库的,我们不知道您的目标是什么数据库。
标签: c# entity-framework data-annotations code-first