[英]entity framework 6 can't insert record
如果我定義一個序列和一個像這樣的表:
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
以Identity
為iden
列,它不表現為它應該由異常拋出SaveChanges
是DbUpdateConcurrencyException
:
存儲更新,插入或刪除語句影響了意外的行數(0)。 自加載實體以來,實體可能已被修改或刪除。 刷新ObjectStateManager條目。
我究竟做錯了什么?
生成的testTab:
<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
類的[Key]
確保您沒有同時擁有兩個不同的ABEntities2 (DbContext)
實例
看起來唯一的問題是sequence
用法,因為我將表定義更改為
CREATE TABLE [dbo].[testTab]
(
[iden] [bigint] identity(1,1) NOT NULL ,
[name1] [nchar](10) NULL,
[name2] [nchar](10) NULL,
PRIMARY KEY CLUSTERED
(
[iden] ASC
)
) ON [PRIMARY]
identity
而非sequence
和重新創建的模型,一切正常。 sql2012中引入的sequence
似乎無法正確與EF6一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.