Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menggunakan Dapper dengan Tipe Spasial SQL sebagai parameter

Kunci untuk menerapkan params spesifik DB yang aneh dan luar biasa semuanya bermuara pada SqlMapper.IDynamicParameters

Antarmuka sederhana ini memiliki satu titik akhir:

public interface IDynamicParameters
{
    void AddParameters(IDbCommand command);
}

Dapper sudah memiliki implementasi generik DB dari antarmuka ini yang disebut:DynamicParameters yang memungkinkan Anda untuk menangani nilai keluaran dan pengembalian.

Untuk meniru hal spasial ini saya akan mencoba sesuatu seperti:

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
       });
    }
}

Penggunaan:

cnn.Query("SELECT * FROM MyTable WHERE @parameter.STIntersects(MyGeometryColumn)",
  new SpatialParam("@parameter", builder.ConstructedGeometry));

Implementasi antarmuka yang sederhana ini hanya menangani satu param, tetapi dapat dengan mudah diperluas untuk menangani banyak param, baik dengan meneruskan dari konstruktor atau menambahkan metode AddParameter pembantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menambahkan kolom dengan kunci utama di tabel yang ada

  2. VS 2010 membangun proyek database menerima SQL04151

  3. Pilih ukuran database SQL Server

  4. Tampilkan semua baris yang digandakan

  5. Pisahkan string yang dipisahkan koma dan sisipkan ke tabel (int)