我正在使用Entity Framework 4.1 RC和代码第一种方法.
如何调用自定义sql函数?
如何调用自定义sql函数?
如果我使用EdmFunction属性,我应该指定什么命名空间?
[EdmFunction("Namespace","GetAge")] public static int GetAge(Person p) { throw new NotSupportedException(…); }
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函数,因为数据库是由模型(代码)定义并由实体框架生成的.