.net 实体框架4基于WCF的LINQ到实体查询
我需要创建一个WCF服务来返回通过实体框架从数据库查询的对象。我读过的大多数文章都建议我应该为每种类型的查询创建一个方法。但我认为这将导致我将创建的方法数量激增,例如:.net 实体框架4基于WCF的LINQ到实体查询,.net,wcf,.net-4.0,entity-framework-4,linq-to-entities,.net,Wcf,.net 4.0,Entity Framework 4,Linq To Entities,我需要创建一个WCF服务来返回通过实体框架从数据库查询的对象。我读过的大多数文章都建议我应该为每种类型的查询创建一个方法。但我认为这将导致我将创建的方法数量激增,例如: GetAllCars() GetCarsByBrand(字符串品牌名) GetCarsByEAR(整数年) GetCarsByBrandYear(字符串品牌名,整数年) GetCarsByResize(浮动轮胎尺寸) GetCarsByEngineType(字符串引擎类型) GetCarsByEnginizeAndType(浮
- GetAllCars()
- GetCarsByBrand(字符串品牌名)
- GetCarsByEAR(整数年)
- GetCarsByBrandYear(字符串品牌名,整数年)
- GetCarsByResize(浮动轮胎尺寸)
- GetCarsByEngineType(字符串引擎类型)
- GetCarsByEnginizeAndType(浮点引擎大小、字符串引擎类型)
- GetCarsByEngineseZebetween(浮动下限发动机尺寸,浮动上限发动机尺寸)
- 等等
- QueryCars(表达式)
- QueryCars(字符串表达式)
我目前在.NET4.0中工作。安全性并不是一个真正的问题,因为这只是一个内部应用。根据您的描述,您不需要纯WCF服务,而是需要。数据服务允许您在客户端上创建和定义Linq查询。您要查找的是。它使用OData协议使用Linq查询数据 例如: 在上面的代码中,service.Users的类型为
IQueryable
,允许您使用表达式树查询它
您可以使用LINQPad轻松尝试SO服务,或者在VS项目中添加对服务URL的引用。这似乎就是我要寻找的答案。出于好奇,在WCF数据服务出现之前,这个问题是如何解决的?在阅读了一些相关内容后,我不清楚这是否也会支持延迟加载。您知道延迟加载是否会自动处理吗?@Mas:在此之前,它被称为ADO.NET数据服务或Astoria,在此之前,Linq不存在;)@Mas:自动延迟加载服务是一个非常糟糕的主意。您可以使用特殊的扩展方法Expand on collections或调用LoadProperty。我同意,在这种情况下,延迟加载是个坏主意。
var query = from u in service.Users
orderby u.Reputation descending
select u;
Console.WriteLine ("Top ten Stack Overflow users");
foreach (var u in query.Take(10))
{
Console.WriteLine ("{0}: {1}", u.DisplayName, u.Reputation);
}