今天算是研究了一天的SqlFunctions,请教了几个群的牛人,居然发现大伙对这个都比较陌生, 有的甚至直指EF中是不能调用sqlserver里的方法的。 因为之前搞过linq to sql 里面的SqlMethod ,所以觉得EF里面必须是可以的。 首先需要简短介绍一下EF6和EF5,当你N
今天算是研究了一天的SqlFunctions,请教了几个群的牛人,居然发现大伙对这个都比较陌生,
有的甚至直指EF中是不能调用sqlserver里的方法的。
因为之前搞过linq to sql 里面的SqlMethod ,所以觉得EF里面必须是可以的。
首先需要简短介绍一下EF6和EF5,当你NuGet一个EF5的包的时候,只有EntityFramework,而EF6确有EntityFramework和EntityFramework.SqlServer,
这2者是有很大区别的。
在EF5环境下,我们如何使用SqlFunctions 呢?
首先添加EF环境,在引用中添加Syste.Data.Entity,再添加命名空间
<span>using</span> System.Data.Objects.SqlClient;
然后写一个控制器测试
<span> 1</span> <span>public</span><span> ActionResult Index() </span><span> 2</span> <span> { </span><span> 3</span> <span>int</span> Count = <span>0</span><span>; </span><span> 4</span> <span>using</span> (Models.TestProjectDBEntities db = <span>new</span><span> Models.TestProjectDBEntities()) </span><span> 5</span> <span> { </span><span> 6</span> <span>var</span> Query = <span>from</span> c <span>in</span> db.AdminInfoes <span>where</span> SqlFunctions.Square(<span>1.00</span>)==c.Orders <span>select</span><span> c; </span><span> 7</span> Count =<span> Query.ToList().Count(); </span><span> 8</span> <span> } </span><span> 9</span> ViewBag.Count =<span> Count; </span><span>10</span> <span>return</span><span> View(); </span><span>11</span> }
运行正常。
EF6环境下,
我们的引用中是存在EntityFramework和EntityFramework.SqlServer的,
然后我们添加命名空间
<span>using</span> System.Data.Entity.SqlServer;
注意一下,跟EF5下的命名空间是不一样的,这个地方我也是出现了误区,当我的添加是using System.Data.Objects.SqlClient; 的时候一直报错,
这个错误确实比较奇特,我网上找了很多原因一直没有找到,最后一个偶然的机会,才得到这个结果。
然后我们再运行上面的测试代码,应该也是运行通过的。
SqlFunctions里提供了很多的方法,这个都是比较简单的,就不做详细介绍了。<br><br>本群提供ASP.NET MVC,EF,LINQ,WEB API技术支持,不在乎人多,在乎人精。<br>ASP.NET MVC群 171560784 <br>诚邀各路高手、初学者加入。