PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truy vấn PostgreSQL với Npgsql và Entity Framework bằng cách sử dụng unaccent

Nếu bạn sử dụng Codefirst cách tiếp cận, bạn nên thử sử dụng EntityFramework.CodeFirstStoreFunctions .

  1. Đầu tiên, hãy thêm EntityFramework.CodeFirstStoreFunctions vào dự án của bạn
  2. Thêm quy ước tùy chỉnh với unsccent sang DbModelBuilder
  3. Sử dụng nó trong một truy vấn.

Ví dụ về ngữ cảnh cơ sở dữ liệu:

public class DatabaseContext : DbContext
{
    public DatabaseContext () : base("Context")
    {
        Database.SetInitializer<DatabaseContext>(null);
    }

    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("public");
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        /** Adding unaccent **/           
        modelBuilder.Conventions.Add(new CodeFirstStoreFunctions.FunctionsConvention<DatabaseContext>("public"));
    }

    [DbFunction("CodeFirstDatabaseSchema", "unaccent")]
    public string Unaccent(string value)
    {
        // no need to provide an implementation
        throw new NotSupportedException();
    }
}

Ví dụ về cách sử dụng:

var users = ctx.Users
               .Where(elem => ctx.Unaccent(elem.FirstName) == ctx.Unaccent("João"))
               .ToList();

Thông báo quan trọng:
Giải pháp này hoạt động với EntityFramework6.Npgsql (sử dụng Npgsql 3. *).
Nó không hoạt động với Npgsql.EntityFramework (sử dụng Npgsql 2. *)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Biên dịch phần mở rộng mongo_fdw có thể ghi trên định dạng nhị phân của cài đặt PostgreSQL.

  2. Cách tìm khoảng thời gian giữa hai ngày trong PostgreSQL

  3. Openshift và net-ssh không tương thích? (2.9.3-beta1 so với 2.9.2)

  4. Cách cài đặt Haproxy và Keepalived

  5. Sao chép một vài cột của tệp csv vào bảng