我需要创建一个WCF服务,通过Entity Framework从数据库中查询对象并返回。大多数我阅读的文章都建议我为每种类型的查询创建一个方法。但我认为这将导致我创建的方法数量爆炸,例如:
- GetAllCars() - GetCarsByBrand(string brandName) - GetCarsByYear(int year) - GetCarsByBrandAndYear(string brandName, int year) - GetCarsByTireSize(float tireSize) - GetCarsByEngineType(string engineType) - GetCarsByEngineSizeAndType(float engineSize, string engineType) - GetCarsByEngineSizeBetween(float lowerEngineSize, float upperEngineSize) - 等等...
此外,如果需要新的查询,则必须创建一个新的方法来支持它。
一定有更好、更通用的方法来解决这个问题。理想情况下,客户端可以通过LINQ创建一个表达式树,将其发送到WCF,然后通过实体框架运行查询。那么我就可以有一个方法来支持所有查询。例如:
- QueryCars(Expression expression)
或者将表达式作为字符串发送:
- QueryCars(string expression)
开发人员是如何解决这个灵活查询的问题的?
我目前正在使用.NET 4.0进行工作。安全性并不是真正的问题,因为这只是一个内部应用程序。
- GetAllCars() - GetCarsByBrand(string brandName) - GetCarsByYear(int year) - GetCarsByBrandAndYear(string brandName, int year) - GetCarsByTireSize(float tireSize) - GetCarsByEngineType(string engineType) - GetCarsByEngineSizeAndType(float engineSize, string engineType) - GetCarsByEngineSizeBetween(float lowerEngineSize, float upperEngineSize) - 等等...
此外,如果需要新的查询,则必须创建一个新的方法来支持它。
一定有更好、更通用的方法来解决这个问题。理想情况下,客户端可以通过LINQ创建一个表达式树,将其发送到WCF,然后通过实体框架运行查询。那么我就可以有一个方法来支持所有查询。例如:
- QueryCars(Expression expression)
或者将表达式作为字符串发送:
- QueryCars(string expression)
开发人员是如何解决这个灵活查询的问题的?
我目前正在使用.NET 4.0进行工作。安全性并不是真正的问题,因为这只是一个内部应用程序。