sql >> Database >  >> RDS >> PostgreSQL

Query uitvoeren op PostgreSQL met Npgsql en Entity Framework met unaccent

Als u de Codefirst . gebruikt aanpak, moet u proberen EntityFramework.CodeFirstStoreFunctions te gebruiken .

  1. Voeg eerst EntityFramework.CodeFirstStoreFunctions toe aan uw project
  2. Voeg een aangepaste conventie toe met unaccent naar DbModelBuilder
  3. Gebruik het in een zoekopdracht.

Voorbeeld van databasecontext:

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

Voorbeeld van gebruik:

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

Belangrijke opmerking:
Deze oplossing werkt met EntityFramework6.Npgsql (die Npgsql 3.* gebruikt).
Het werkt niet met Npgsql.EntityFramework (die Npgsql 2.* gebruikt)




  1. MySQL invoegen in selecteren

  2. Hoe de tabel bij te werken met activeandroid na het toevoegen van een nieuwe kolom

  3. Hoe hiaten in de sequentiële nummering in mysql te vinden?

  4. PostgreSQL:Hoe stel ik het zoekpad in op gebruikersniveau?