繁体   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