0
我有一个EF Code First和MSSQL用户定义函数有趣的问题。 我写了一个数据库函数,它返回一个标量值,我想将该函数映射到我的DbContext。实体框架代码第一个函数
基于信息,我发现我写这个:
[DbFunction("AppDbContext", "GetNextDocumentNumber")]
public virtual int GetNextDocumentNumber()
{
return ((IObjectContextAdapter)this)
.ObjectContext
.ExecuteStoreCommand("GetNextDocumentNumber");
}
我也写一个简单的单元测试,以检查是否函数返回正确的值。 问题是,上面的代码返回-1。当我在SMSS上执行功能时,我会得到正确的结果。
在不同的网站上进行搜索后,我找到了解决办法thatlooks这样的:
public virtual int GetNextDocumentNumber()
{
return this.Database
.SqlQuery<int>("select dbo.GetNextDocumentNumber()")
.Single();
}
在这种情况下,我得到正确的值。
我只想知道以前的代码有什么问题,或者我做错了什么。在这两种情况下,我都会获得价值。但只有在一种情况下,值才是正确的。
谢谢!在LINQ表达式中调用函数解决了我的问题。 – TomAsh