我有一个表,它从一个序列生成其主键(只是从0开始计数):
CREATE TABLE [dbo].[testTable](
[id] [int] NOT NULL,
[a] [int] NOT NULL,
CONSTRAINT [PK_testTable] PRIMARY KEY CLUSTERED ([id] ASC))
ALTER TABLE [dbo].[tblTestTable] ADD CONSTRAINT [DF_tblTestTable_id] DEFAULT (NEXT VALUE FOR [seq_PK_tblTestTable]) FOR [id]
我使用Visual Studio的O / R Designer为表创建映射文件;该字段定义为:id
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_id", DbType="Int NOT NULL", IsPrimaryKey=true)]
public int id {…}
现在我正在尝试通过 LINQ 插入数据。
var testTableRecord = new testTable()
{
a = 1,
};
db.Connection.Open();
db.testTables.InsertOnSubmit(testTableRecord);
db.SubmitChanges();
Console.WriteLine($"id: {testTableRecord.id}");
我遇到的问题是,LINQ 似乎无法通过序列处理 id 生成,因为它在插入时隐式将 0 设置为 0。id
当我将 设置为 时,插入失败,因为它尝试将 NULL 插入到不可为 null 的字段中。idCanBeNull
当我将设置为 时,插入工作,但它需要一个字段,并尝试加载生成的id,并将对象中的设置为null,因为返回...idIsDbGeneratedIDENTITYSELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 int',@p0=1idSCOPE_IDENTITY()null
我一直在考虑只使用 ,销毁 LINQ 对象并在数据库中查询 ,但我没有任何唯一的东西可以搜索。IsDbGeneratedid
不幸的是,将ID创建机制更改为IDENTITY不是一种选择。
我是否必须显式查询数据库以获取下一个序列值并手动设置 id?
通过 LINQ 处理这些插入件的最佳方式是什么?
PS:我需要id,因为我必须插入更多使用id作为FK的数据。
qq_遁去的一_1
开心每一天1111
相关分类