我是在 C# 的类中使用带有 Linq 的表的新手,如果我的术语不正确,请原谅我!一般来说,数据库也相对较新,所以如果这是我忽略的基本数据库概念,请告诉我。
我有一个类似于下面的“人”类,并且我定义了一个名为 Id 的列,它是主键 - 即它必须是唯一的。
我还指定了 isDbGenerated = true,这样我就不必手动指定此 ID。
[Table]
public class Person
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int Id;
...
}
当我向表中添加行时,这很有效。
当我从表中删除行时,它会在行 ID 序列中留下空白。这可以。
当我尝试保存我的数据并将其重新加载到表中时,就会出现问题。为了保存数据,我手动将所需的信息写入文本文件。
当我将数据重新加载到我的表中时,自动生成的 ID 会覆盖我保存信息时使用的原始 ID。这会导致我的大型数据库出现问题,该数据库通过它们的 ID 引用这些行。
例如。
我的数据库包含这些行:
- 身份证、姓名
- 1、约翰
- 2、吉姆
- 4,马克(注释#3丢失了,因为我在某个时候删除了它)
- 5、大卫
我将这些保存到文本文件中。我在另一个时间将它们从文本文件中加载回一个空表中。
- 1、约翰
- 2、吉姆
- 3、马克
- 4、大卫
IsDBGenerated 功能使这些数字是连续的。
对我来说,最好的设置方法是什么,以便在保留唯一 ID 的同时将数据重新加载到表中?
编辑:我认为使用自动生成的密钥并没有让我的生活更轻松。
自行生成下一个要使用的主键的最佳方法是什么?一个。只是在最后一个条目后增加数字?湾。生成 GUID?C。现有功能?