अजीब और अद्भुत डीबी विशिष्ट पैराम्स को लागू करने की कुंजी SqlMapper.IDynamicParameters
तक उबलती है
इस सरल इंटरफ़ेस का एक ही समापन बिंदु है:
public interface IDynamicParameters
{
void AddParameters(IDbCommand command);
}
Dapper के पास पहले से ही इस इंटरफ़ेस का एक DB जेनेरिक कार्यान्वयन है जिसे कहा जाता है:DynamicParameters
जो आपको आउटपुट को संभालने और मूल्यों को वापस करने की अनुमति देता है।
इस स्थानिक सामान का अनुकरण करने के लिए मैं कुछ इस तरह की कोशिश करूंगा:
public class SpatialParam : SqlMapper.IDynamicParameters
{
string name;
object val;
public SpatialParam(string name, object val)
{
this.name = name;
this.val = val;
}
public void AddParameters(IDbCommand command, SqlMapper.Identity identity)
{
var sqlCommand = (SqlCommand)command;
sqlCommand.Parameters.Add(new SqlParameter
{
UdtTypeName = "geometry",
Value = val,
ParameterName = name
});
}
}
उपयोग:
cnn.Query("SELECT * FROM MyTable WHERE @parameter.STIntersects(MyGeometryColumn)",
new SpatialParam("@parameter", builder.ConstructedGeometry));
इंटरफ़ेस का यह सरल कार्यान्वयन केवल एक ही परम को संभालता है, लेकिन इसे आसानी से कई पैरा को संभालने के लिए बढ़ाया जा सकता है, या तो कंस्ट्रक्टर से पास करके या एक सहायक AddParameter विधि जोड़कर।