sql >> データベース >  >> RDS >> PostgreSQL

unaccentを使用してNpgsqlとEntityFrameworkでPostgreSQLをクエリする

    コードファーストを使用する場合 アプローチでは、 EntityFramework.CodeFirstStoreFunctionsを使用してみてください 。

    1. 最初に、EntityFramework.CodeFirstStoreFunctionsをプロジェクトに追加します
    2. unccentを使用してカスタム規則を追加します DbModelBuilderへ
    3. クエリで使用します。

    データベースコンテキストの例:

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

    使用例:

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

    重要なお知らせ:
    このソリューションは EntityFramework6.Npgsqlで機能します (Npgsql 3. *を使用します)。
    Npgsql.EntityFrameworkでは機能しません (Npgsql 2. *を使用)




    1. 列をNULLからNOTNULLに変更する方法

    2. インストールされているSQLServerインスタンスとそのバージョンを確認するにはどうすればよいですか?

    3. PostgreSQLの誤った並べ替え

    4. 異なるデータ型で外部キーを設定する