【发布时间】:2014-02-14 18:56:35
【问题描述】:
此站点仅查询数据库 - 无 CRUD
我有一个从 ApiController 调用的服务 DLL,ApiController 方法由我的 HTML 中的 ajax 请求调用。
我的问题是我的服务变得很麻烦。这里只是方法存根的几个示例。我有比这更多的方法。然后它变得更加毛茸茸,因为我必须将每个服务调用都包含在我的 APIController 中。
服务
public IEnumerable<CodedValue> GetStreetSuffix()
{
using (var s = new SqlConnection(this.connection))
{
s.Open();
var results = s.Query<CodedValue>(
@"SELECT DISTINCT STR_SFX Value,STR_SFX Code FROM Addresses ORDER BY 1").ToList();
return results;
}
}
public IEnumerable<dynamic> GetStreetNumbers(string term)
{
using (var s = new SqlConnection(this.connection))
{
s.Open();
var results = s.Query<dynamic>(
@"SELECT DISTINCT STR_NUM FROM Addresses where ISNULL(RTRIM(STR_PFX) + ' ','') + RTRIM(STR) + ISNULL(' ' + STR_SFX,'') = @q", new { q = term }).ToList();
return results;
}
}
API控制器
[HttpGet]
public IEnumerable<dynamic> ListStreetNumbers(string term)
{
var searchservice = new SearchService();
var results = searchservice.GetStreetNumbers(term);
return results;
}
[HttpGet,HttpPost]
public IEnumerable<dynamic> CountParcelsByAddresses(Address json)
{
var searchservice = new SearchService();
var results = searchservice.CountParcelsByAddress(json);
return results;
}
我能做些什么来使这个更干净,同时又不把它抽象出来。我所做的大部分工作都是试图避免在我的控制器或我的 HTML 中使用 SQL 查询。
【问题讨论】:
标签: c# asp.net-mvc refactoring service-layer