实体框架代码第一个自定义Id

Posted

技术标签:

【中文标题】实体框架代码第一个自定义Id【英文标题】:Entity framework code first custom Id 【发布时间】:2011-08-02 18:47:24 【问题描述】:

创建模型时我需要有一个自定义 ID。例如。

这些是我的限制:

    8 位数字。 根据限制,ID 必须以特定数字开头。

如何确保不生成重复项?我正在使用存储库模式,所以我的保存方法如下所示:

public User SaveUser(User user);

【问题讨论】:

【参考方案1】:

您可以确保不会生成重复项,因为 Id = 主键必须是唯一的。一旦您尝试保存带有重复 ID 的实体,您将得到一个异常。

生成算法取决于许多其他因素,包括您想在哪里生成 Id、您希望如何区分新 Id、生成逻辑有多复杂以及约束如何更改以及更重要的一件事 - 你能拥有后续 id 序列中的间隙(例如,如果您使用已生成的 id 回滚事务)?您必须根据这些要求找到自己的机制。

我这样做了几次,我使用单独的表来存储每个序列类型(约束)的上次使用的数字+存储过程用于生成下一个,存储它并将其返回到应用程序+密集锁定/限制性事务隔离级别。

【讨论】:

以上是关于实体框架代码第一个自定义Id的主要内容,如果未能解决你的问题,请参考以下文章

实体框架代码第一个用于标识列的私有集

使用自定义 ID 插入数据的 Code-First 实体框架

实体框架 linq 主细节投影到自定义类

具有关系的实体框架自定义过程

Spring Boot Jpa框架自定义查询语句返回自定义实体

最有效的实体框架代码第一方法展平/投影具有特定子实体的父实体