[英]Entity Framework code-first error when using stored procedure with fields that have default value
我需要通過調用存儲過程來插入實體。 數據庫中的表具有名為CreateDateTime
的列,其默認值為GetDate()
。
我不讓存儲過程設置/更新CreateDateTime
列。
當我調用dbcontext.SaveChanges()
時,的確調用了存儲過程,並插入了一行,但是EF引發了以下錯誤:
函數映射指定結果集不包含的結果列'CreateDateTime'。
我的DbContext
類具有以下內容:
modelBuilder
.Entity<Test>()
.MapToStoredProcedures(s =>
s.Update(u => u.HasName("TestUpdate"))
.Delete(d => d.HasName("TestDelete"))
.Insert(i => i.HasName("TestInsert")));
TestInsert
存儲過程是一個簡單的INSERT INTO... SELECT SCOPE_IDENTITY()
在我的Test
課上,我有一個類似以下的屬性。
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime CreateDateTime { get; set; }
每個@CodeNotFound建議。
從TestInsert存儲過程返回的結果必須返回整個結果集,而不僅僅是SCOPE_IDENTITY()
不僅如此,存儲過程還必須為實體模型中的每個“映射”字段都包含一個參數。
我的最后一行是InsertTest存儲過程,看起來像這樣。
SELECT * FROM Test WHERE ID = SCOPE_IDENTITY()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.