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