【问题标题】:System generated integer entity ID's using DDD-style repositories with EF database first系统生成整数实体 ID,首先使用带有 EF 数据库的 DDD 样式存储库
【发布时间】:2013-06-19 15:15:50
【问题描述】:

我们正在 C#/.NET/EF 数据库优先/SQL Server 环境中实现基于 DDD 的系统。我们的域实体与 EF 生成的实体是分开的,其存储库负责与 EF 及其实体一起工作。我想为新创建的实体提供系统生成的(相对于数据库生成的/自动增量)ID。很自然的选择是使用 GUID,但由于数据库的大小而存在阻力。首选是拥有int ID。

NHibernate 具有我过去使用过的 HiLo 机制,但在 EF 中似乎没有类似的(或至少可用于生产的模拟)。

在 SQL Server 上允许使用 EF 数据库优先的唯一整数系统生成 ID 的方法是什么?

【问题讨论】:

    标签: sql-server entity-framework domain-driven-design ddd-repositories


    【解决方案1】:

    不,Entity Framework 不支持系统生成的 ID。如果你愿意,你必须自己实现它,也许在派生的DbContext 中覆盖SaveChanges,但我不建议你走这条路

    【讨论】:

    • 不太清楚你的第一句话是什么意思......看起来你提议使用数据库生成的 ID,这正是我试图避免的问题将此方法与工作单元模式一起使用。
    • 谈论 180 度编辑 :) 我认为说 EF 不支持系统生成的 ID 是不正确的 - 它显然支持并且与 GUID 完美配合。它似乎没有提供生成唯一整数 ID 的帮助。
    • 我不是在谈论 GUID,我建议仅在绝对必要时使用 GIUD。您应该更多地告诉我们您在工作单元中遇到的问题,因为我没有看到使用带有工作单元模式的数据库生成 ID 的任何问题
    • 查看我上面发布的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2018-08-03
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    相关资源
    最近更新 更多