处理实体对象设计中的id

DEH*_*AAS 8 .net c# database entity class-design

有一段时间我一直在考虑如何处理由数据库分配标识符的对象.

表示表实体的典型对象可能如下所示:

public class Test
{
    public int Id { get; private set; }
    public string Something { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

假设我们希望使用此对象来插入,检索和更新数据库中的对象.至于检索和更新,我们没有问题,因为Id字段总是有一个值.

但是,如果我们要将Test类型的新对象插入数据库,则Id字段仍需要具有值.我们可以使用"0",因为它不太可能被用作数据库密钥,但实际上这不是一个好的设计.

同样,如果我们反转情况并使Id属性可以为空,我们可以对数据库尚未分配标识符的对象使用null.但是,现在可以从数据库中检索的对象不具有标识符(如类设计所允许,但不是数据库设计)

关于如何为这个问题做好设计的任何好主意?

FIr*_*nda 1

因此,您有一个包含数据库表的标识符作为字段的类,因此在检索/删除和更新的情况下,您的实体的标识符与数据库记录的标识符对齐。在插入的情况下,您可以检索刚刚插入的记录的标识值并使用该值更新您的实体。因此,您可以使用单独的存储过程来进行插入/更新/检索和删除。插入 SP 可以返回刚刚插入的记录的 id 作为out parameter. 希望我能回答你的问题。