2011-12-14 2 views
1

互換性の問題により変更できない古いDBがあります。そのため、ほとんどのvarcharフィールドには、Unicode以外の文字が含まれています。このUnicode文字は、文字セットcp1251で正確に読み取られます。DB内の/からvarcharフィールドを保存および取得するための特定の関数を定義する方法は?

私たちは、EF4.1を使用して、古いDB上に新しいアプリケーションを開発しています。データをascii cp1251にしてutf-8で表示する必要があります。残念ながら、私はEFの新人です。だから私は全面的に問題を抱えている。

文字列をcp1251からutf-8に変換する2つの関数を実装して、データの取得時とDBの入力時に入力する方法を探しています。

私はこれを入れて、現在使用されているフィールド、テーブル、またはデータベースに関係なく取得するときに、varcharフィールドを保存してcp1251フォーマットに変換し、逆もまた同様にしてEFをキャッチする方法があります。より具体的な実装になります。私たちは、データアクセス層やビジネスロジックを持っていない

、私たちはUIからEF4.1に直行し、任意のビジネスロジックは、私たちは彼らにDbContextクラスを置く実装を必要とします。

私はちょうどオンラインを探すために知っている、またはどこ開始しないでください。

任意のポインタを歓迎します。前もって感謝します。

答えて

1

だけCP1251を使用しているすべてのフィールドが非Unicodeとしてマークされ、それを使用しようとしていることを確認してください。 IMHOそれは動作するはずです。一部のデータ型にカスタム変換関数を追加する拡張ポイントはありません。 EDMX内のプロパティ非ユニコードは、単にプロパティのプロパティページで設定するようにするに

modelBuilder.Entity<YourEntityType>() 
      .Property(p => p.YourStringProperty) 
      .IsUnicode(false); 
+0

変換を行うComplexTypeですべての文字列プロパティを置換できますか?複雑な型はEF4.1のストアドプロシージャや何かに関するバグをどこかに持っていたと思いますか? –

関連する問題