【发布时间】:2011-06-23 12:22:25
【问题描述】:
我有一个实体映射到具有自动生成的标识列的数据库表。
创建新实体并调用SaveChanges() 后,EF 执行插入查询,该查询还检索新插入记录的新标识值。
有时我并不关心新值是什么(例如,我插入了一条新的日志记录,但我并不真正关心添加的标识值)。
有什么办法可以让 EF 不查询这个值?
谢谢,
伊泰
【问题讨论】:
标签: c# .net entity-framework .net-3.5 c#-3.0
我有一个实体映射到具有自动生成的标识列的数据库表。
创建新实体并调用SaveChanges() 后,EF 执行插入查询,该查询还检索新插入记录的新标识值。
有时我并不关心新值是什么(例如,我插入了一条新的日志记录,但我并不真正关心添加的标识值)。
有什么办法可以让 EF 不查询这个值?
谢谢,
伊泰
【问题讨论】:
标签: c# .net entity-framework .net-3.5 c#-3.0
EDMX 文件使用属性StoreGeneratedPattern="Identity" 定义了此类自动生成的属性。您必须直接修改 EDMX 并从 SSDL(可能还有 CSDL 部分)中删除此属性。更改设计器的值只会修改不负责 SQL 生成的 CSDL 部分。问题是每次从数据库更新后,您的 SSDL 将再次包含此属性,因为身份是在数据库中定义的。
编辑:
之前的建议是理论。实际上我认为它不会起作用,因为当您没有将 EDMX 中的列定义为身份时,它会将其实际值发送到数据库。在数据库中它会引发异常,因为您将尝试将值插入标识列而不设置标识插入。
【讨论】: