簡體   English   中英

將存儲過程與具有默認值的字段一起使用時,Entity Framework代碼優先錯誤

[英]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.

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