实体框架代码首先自定义Id

时间:2011-08-02 18:47:25

标签: entity-framework-4.1 ef-code-first

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

这些是我的约束:

  1. 8位数。
  2. 根据约束,Id必须以某些数字开头。
  3. 如何确保不生成重复项?我正在使用存储库模式,因此我的保存方法如下所示:

    public User SaveUser(User user);
    

1 个答案:

答案 0 :(得分:0)

您可以确定不会生成重复项,因为它是Id =主键必须是唯一的。尝试保存实体whit复制ID后,您将收到异常。

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

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