【发布时间】:2016-10-31 05:15:57
【问题描述】:
如果我这样定义一个序列和一个表:
CREATE SEQUENCE [dbo].[seq-test]
AS [bigint]
START WITH 0
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
GO
CREATE TABLE [dbo].[testTab]
(
[iden] [bigint] NOT NULL DEFAULT (NEXT VALUE FOR [seq-test]),
[name1] [nchar](10) NULL,
[name2] [nchar](10) NULL,
PRIMARY KEY CLUSTERED
(
[iden] ASC
)
) ON [PRIMARY]
然后尝试使用 EF 6 插入数据:
testTab d = new testTab();
d.name1 = "sss";
using (var db = new ABEntities2())
{
db.testTabs.Add(d);
db.SaveChanges();
}
我将StoreGeneratedPattern 的iden 列设置为Identity,它的行为不正常,SaveChanges 抛出的异常是DbUpdateConcurrencyException:
存储更新、插入或删除语句影响了意外数量的行 (0)。自加载实体后,实体可能已被修改或删除。刷新 ObjectStateManager 条目。
我做错了什么?
生成的测试标签:
<EntitySetMapping Name="testTabs">
<EntityTypeMapping TypeName="ABModel.testTab">
<MappingFragment StoreEntitySet="testTab">
<ScalarProperty Name="iden" ColumnName="iden" />
<ScalarProperty Name="name1" ColumnName="name1" />
<ScalarProperty Name="name2" ColumnName="name2" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
【问题讨论】:
-
你能包含你的 testTabs 类吗?
-
我认为,您在创建时包含了不需要的括号。 ([识别] ASC)在[主要]上。有一个双重关闭。但一个开口
-
一对括号用于主键定义,另一个用于创建表——我修改缩进只是为了更好的可读性
标签: c# entity-framework ef-database-first