entity-framework - 根据另一个字段的值增加 Entity Framework 中的字段

标签 entity-framework auto-increment

我是 Entity Framework 的新手,我遇到了一些在纯 t-sql 中很容易解决的问题。假设我们有一个包含 3 列的表。 Id(身份,主键),IdKind(int),Number(int)。 Column Nubmer 取决于 IdKind 列。此表中的数据应如下所示:

编号 | IdKind |数量

1 | 1 | 1

2 | 1 | 2

3 | 1 | 3

4 | 2 | 1

5 | 2 | 2

6 | 2 | 3

如您所见,列号根据 IdKind 自动递增。在 t-sql 中,我为某些 IdKind 找到了 max(Number) + 1。一切都在一个事务中的一个存储过程中,因此 Number 的值对于 IdKind 是唯一的。

如何在 Entity Framework 中完成同样的事情。在创建新对象或更改 IdKind 时应计算 Number 的值。

最佳答案

我会为此使用数据库触发器,并使用 StoreGeneratedPattern.Computed 在 EF 映射中配置 Number 属性,以通知 EF 此属性已填充到数据库中,必须重新加载每次更新/插入后。

我也不会为每个新数字使用 max()。相反,我会维护单独的表模拟序列。该表应包含每个序列的记录 - 在您的情况下,每个 IdKind 的记录具有当前最大数量。您将选择单个记录并更新它以包含新的最大数量,而不是选择聚合。使用此表必须与对您的实体进行持久更改在同一事务中。

关于entity-framework - 根据另一个字段的值增加 Entity Framework 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309088/

相关文章:

ruby-on-rails - 在rails中生成一个自动增量字段

mysql - 缓慢的 auto_increment 重置

MySQL:#1075 - 表定义不正确;自动增量与另一个键?

PHP MYSQL 将 AUTO INCREMENT 设置为 MAX + 1

entity-framework - 我们是否应该将 Entity Framework dll 添加到所有层

sql-server-2005 - Entity Framework 代码优先非常慢

c# - 数据库脚手架在 .Net Core 1.1 中停止工作

c# - WP7 Linq To SQL(SQL CE)IDataErrorInfo

c# - IEntityChangeTracker 的多个实例不能引用实体对象。在 Entity Framework 4.1 中将相关对象添加到实体时

mySQL 数据库 : Reset AutoIncrement Fields