您正在寻找ColumnAttribute.AutoSync。如果您使用设计器,请检查每一列的自动同步属性并将其设置为从不。
编辑:
好的,这对你不起作用。为一些映射黑客做好准备!
当我插入一些自动生成的主键列时,我得到了这个 SQL:
INSERT INTO [dbo].[TableName]( fieldlist )
VALUES (@p0, @p1, @p2, @p3, @p4)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]
据我了解你的要求,你不想要那个 SELECT
尝试 1:我转到主键字段并将自动生成设置为 false。这导致了 Sql 异常“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'TableName' 中插入标识列的显式值。”换句话说,linq 为该列指定了一个值。
尝试 2:我从设计器中删除了自动生成的列。这导致 Linq 给我一个无效的操作异常:“无法对 'Table(TableName)' 执行创建、更新或删除操作,因为它没有主键。”
尝试 3:我从设计器中删除了自动生成的列,然后我将另一列标记为主键。即使此列不是数据库中的主键,LINQ 的 DataContext 也会使用它来跟踪行标识。对于给定 DataContext 的观察记录,它必须是唯一的。
第三次尝试生成了以下 SQL(这是您要求的)
INSERT INTO [dbo].[TableName]( fieldlist )
VALUES (@p0, @p1, @p2, @p3, @p4)