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