Хотелось бы узнать, что вы думаете об этой части нашей программы:
В нашей базе данных есть список кемпингов.
Партнеры звонят нам, чтобы получить все кемпинги рядом с местоположением GPS или все кемпинги, которые предоставляют бар (мы называем это услугой).
Так как я это понял?
Вот наша база данных:
Campsite
- ID
- NAME
- GPS_latitude
- GPS_longitude
CampsiteServices
-Campsite_ID
-Services_ID
Итак, мой код (c #, но он не имеет отношения, скажем, к языку OO) выглядит так
public class SqlCodeCampsiteFilter{
public string SqlCode;
public Dictionary<string, object> Parameters;
}
interface ISQLCampsiteFilter{
SqlCodeEngineCore CreateSQLCode();
}
public class GpsLocationFilter : ISQLCampsiteFilter{
public float? GpsLatitude;
public float? GpsLongitude;
public SqlCodeEngineCore CreateSQLCode()
{
--return an sql code to filter on the gps location like dbo.getDistance(@gpsLat,@gpsLong,campsite.GPS_latitude,campsite.GPS_longitude) with the parameters
}
}
public class ServiceFilter : : ISQLCampsiteFilter{
public int[] RequiredServicesID;
public SqlCodeEngineCore CreateSQLCode()
{
--return an sql code to filter on the services "where ID IN (select CampsiteServices.Service_ID FROm CampsiteServices WHERE Service_ID in ...)
}
}
Так в моем коде веб-сервиса:
List<ISQLFilterEngineCore> filters = new List<ISQLFilterEngineCore>();
if(gps_latitude.hasvalue && gps_longitude.hasvalue){
filters.Add (new GpsLocationFilter (gps_latitude.value,gps_longitude.value));
}
if(required_services_id != null){
filters.Add (new ServiceFilter (required_services_id ));
}
string sql = "SELECT ID,NAME FROM campsite where 1=1"
foreach(ISQLFilterEngineCore aFilter in filters){
SqlCodeCampsiteFilter code = aFilter.CreateSQLCode();
sql += code.SqlCode;
mySqlCommand.AddParameters(code.Parameters);//add all the parameters to the sql command
}
return mySqlCommand.GetResults();
1) Я не использую ORM по той простой причине, что система существует уже 10 лет, и единственный разработчик, который здесь с самого начала, начинает узнавать о разнице между публичным и частным.
2) Мне не нравится SP, потому что: мы можем сделать переопределение, и t-sql не так уж и забавен в использовании:)
Так что ты думаешь? Это понятно ? У вас есть какой-нибудь образец, на который мне следует взглянуть?
Если что-то не понятно, спросите