簡體   English   中英

使用 LINQPad 將實體插入 SQL Compact 4 Table with Identity 列

[英]Inserting Entity into SQL Compact 4 Table with Identity column using LINQPad

我正在嘗試使用 LINQPad 將新記錄插入到 SQL CE 4 數據庫中,並且遇到表的身份問題。 假設我有這個簡單的表格,例如:

PEOPLE
Id int IDENTITY(1,1) NOT NULL,
Name nvarchar(100) NOT NULL

我可能以錯誤的方式做事,但我在 LINQPad 中嘗試過

People person = new Person { Name = "Bob" };
People.InsertOnSubmit(person);
SubmitChanges();

但我得到一個 SqlCeException 說明

"The colum cannot be modified. [ Column name = Id ]"

我可以用 SQL 插入一條記錄就好了,這在 SQL CE 或其數據提供者和 SQL CE 中沒有錯誤的情況下工作,我想為我設置 Id 列是什么

INSERT INTO PEOPLE (Name) VALUES ('Bob');

我還缺少另一個步驟嗎? 我什至不確定它是否是 LINQPad 問題,但我想我還是會問,因為這就是我現在正在嘗試使用此代碼的原因。

如果你在 LinqPad 中運行它,你會得到什么

(from dm in this.Mapping.GetTable(typeof(People)).RowType.DataMembers 
    select new  { dm.DbType, dm.Name, dm.IsPrimaryKey , dm.IsDbGenerated }
 ).Dump();

特別是,據我了解, IsDbGenerated 對於 id 列應該是正確的。

我有一個 SQL CE 3.5 數據文件,我以前在 LinqPad 中使用過,並查看為插入生成的 SQL 它沒有提到 id

這可能是 dbml 文件的問題。 檢查該列是否標記為標識(或在 L2S 中調用的任何內容)。 問題是 Id 不能出現在插入查詢中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM