C# EF:SQL函数作为属性
是否可以在EF中添加标量值SQL函数作为属性 我有一些函数,这些函数对OrderLine表中采用OrderId(即OrderLineCost之和)的不同值求和 我希望能够通过订单数据模型访问这些 有没有办法将这些函数作为属性添加到订单数据模型中,这样我就可以只访问Order.OrderLineCostTotal,而不用单独调用数据库C# EF:SQL函数作为属性,c#,entity-framework,sql-function,C#,Entity Framework,Sql Function,是否可以在EF中添加标量值SQL函数作为属性 我有一些函数,这些函数对OrderLine表中采用OrderId(即OrderLineCost之和)的不同值求和 我希望能够通过订单数据模型访问这些 有没有办法将这些函数作为属性添加到订单数据模型中,这样我就可以只访问Order.OrderLineCostTotal,而不用单独调用数据库 谢谢是的。你应该能够做到这一点。使用EF 6.1,在代码优先和数据库优先的情况下更容易构建此类内容 有一个名为code-first-store functions的
谢谢是的。你应该能够做到这一点。使用EF 6.1,在代码优先和数据库优先的情况下更容易构建此类内容 有一个名为
code-first-store functions
的codeplex项目,用于简化从数据上下文使用数据存储函数的过程。以下是nuget软件包说明:
支持实体框架6.1.1+代码优先的存储函数(表值函数、标量用户定义函数和存储过程)
下面是上面链接中的一个示例,它是一个上下文方法,通过调用SQL函数按邮政编码获取客户。您可以轻松地将其转换为只读属性:
[DbFunction("MyContext", "CustomersByZipCode")]
public IQueryable<Customer> CustomersByZipCode(string zipCode)
{
var zipCodeParameter = zipCode != null ?
new ObjectParameter("ZipCode", zipCode) :
new ObjectParameter("ZipCode", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext
.CreateQuery<Customer>(
string.Format("[{0}].{1}", GetType().Name,
"[CustomersByZipCode](@ZipCode)"), zipCodeParameter);
}
[DbFunction(“MyContext”、“CustomersByZipCode”)]
公共IQueryable CustomersByZipCode(字符串zipCode)
{
var zipCodeParameter=zipCode!=null?
新的ObjectParameter(“ZipCode”,ZipCode):
新的ObjectParameter(“ZipCode”,typeof(string));
返回((IObjectContextAdapter)this).ObjectContext
.CreateQuery(
string.Format(“[{0}].{1}”,GetType().Name,
“[CustomerByZipCode](@ZipCode)”),zipCodeParameter);
}
如果首先使用EF 6数据库,则可以使用函数导入将函数导入到模型中。但是,该向导有很多错误(即使在最新的VisualStudio2013中也是如此),因此有一种常见的方法可以手动在EDMX xml中修复导入的内容。您可以在此处找到说明:
这是对这个问题的回答吗?如果我理解正确的话,问题是从函数计算Order.OrderLineCostTotal,而不需要对数据库进行额外调用。