2013-04-04 17 views
5

PostgreSQLとNpgsqlでEF CFの最新バージョンを使用しているプロジェクトがあります。NpgsqlとEntity Frameworkのコードの統合

私のモデルは次のようになります。

[Table("mytable")] 
public class MyTable 
{ 
    [Column("id")] 
    public int Id { get; set; } 
    [Column("mycolumn")] 
    public string MyColumn { get; set; } 
} 

そして、データベース/テーブル/列のような小文字の名前があります。

CREATE TABLE mytable 
{ 
    id serial, 
    mycolumn character(50) 
} 

をNpgsqlのは、私は、データ注釈を使用しなければならないので、SQLは、引用符でコマンドを生成しますPostgreSQLの特性のために、魔女は迷惑です。しかし、私は引用符で区切られた名前をデータベースに使用しないでください。

生成されたSQLでコマンドを生成したり、小文字のテーブル/カラム名を強制するときに、引用符を含めないようにNpgsqlを設定する方法はありますか?

+0

私はそれを見ています。 –

+1

ハイフランシスコ、EF6では、表と列の名前を小文字にする代わりに表記法を使用して、それぞれに属性を追加することができます。 :) –

+0

コード規約を使用して動作します。幸いなことに、Postgresは列名がすべて小文字であると判断したときに二重引用符を無視します(したがって、クエリ時に大文字と小文字を区別します)。しかし、二重引用符をオフにする方法を知っていると良いでしょう。 – jhexp

答えて

8

もし私が何かを見逃していないなら、あなたはいくつかの一般的な方法を望んでいますof changing the naming convention for tables

EF6がcustom conventions機能を持っている - それはまだ正式版ではないが、それはあなたのために働く場合は、いくつかのリンク...あなたの場合

http://entityframework.codeplex.com/wikipage?title=Custom%20Conventions

を、あなたはそれを実装する必要があると思いますクラス/ Type私は推測します - 例えば(いくつかの擬似コード)...

1)ApplyIConfigurationConvention<Type, EntityTypeConfiguration>(あなたがEntityConventionBase用EFソースを確認することができます)

2)を実装 - テーブル名を設定(ToTable())を介して生成されている方法を変更する - に.ToLowerCase()

3)のようなものが...例えば

...規則に追加

public class SmallCapsEntitiesConfigurationConvention 
    : IConfigurationConvention<Type, EntityTypeConfiguration> 
{ 
    public void Apply(Type memberInfo, Func<EntityTypeConfiguration> configuration) 
    { 
     configuration().ToTable(memberInfo.Name.ToLowerInvariant(), null); 
    } 
} 

あなたは私にはわかりません、そうでない場合についてNpgsql/PostgreSQLのここ
http://blog.cincura.net/233167-custom-conventions-in-entity-framework-6-helping-firebird/

一例を見ることができる - それは私には少し「生」を思えました。しかし、あなたはEF側でそれを扱うことができます。

+0

それは私の問題を解決する良い方法です!しかし、EF6は安定版としてリリースされておらず、私の会社ではこのバージョンを使用できません。とにかくこれを覚えておきます。 –

+2

私は@MaxBündchenを知っていますが、それはあなたが思うように最高です - PostgreSQL側の解決策が不足しています – NSGaga

+1

ちょっと、私は同じ問題を抱えています...そしてEF6は今外です! :D – matrixugly

関連する問題