.net – 自定义SQL函数和代码优先(EF 4.1)

前端之家收集整理的这篇文章主要介绍了.net – 自定义SQL函数和代码优先(EF 4.1)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Entity Framework 4.1 RC和代码第一种方法.
如何调用自定义sql函数

如果我使用EdmFunction属性,我应该指定什么命名空间?

[EdmFunction("Namespace","GetAge")] 
public static int GetAge(Person p) 
{  
    throw new NotSupportedException(…); 
}

当我尝试使用此类函数执行LINQ查询时,抛出以下异常:

The specified method ‘…’ on the type
‘…’ cannot be translated into a LINQ to
Entities store expression.

解决方法

如果要调用sql函数,则必须执行自定义SQL查询.为此,请使用context.Database.sqlQuery.实体框架支持存储过程的映射,但DbContext API(EF 4.1)不支持功能.如果要调用存储过程,则必须再次使用context.Database.sqlQuery. Linq查询中永远不能使用存储过程.

EdmFunction是ObjectContext API和Entity设计器的特性.命名空间设置为EDMX文件中定义的命名空间.使用代码优先时,您没有EDMX文件,也无法定义函数映射.

顺便说一句.如果您遵循代码第一种方法,则不应该有任何存储过程或sql函数,因为数据库是由模型(代码)定义并由实体框架生成的.

猜你在找的MsSQL相关文章