1

EF 4.1コードを使用する場合、まずユーザーのスキーマにユーザー定義データ型を作成できますか?EF 4.1コードを使用するときにユーザー定義データ型を作成することはできますか?

+0

はいそれは可能ですが、[ファイル名を指定して実行時にEntity Frameworkのモデルを変更する]この投稿にllokている[1] [1]:http://stackoverflow.com/questions/4019895/実行時エンティティフレームワークモデルの変更 – DeveloperX

+0

@DeveloperXこの質問は、ユーザー定義のデータ型ではなくユーザー定義のフィールドに関するものです。 – Eranga

答えて

1

簡易返答はありません。

長い答え:ユーザー定義型を使用しようとすると

現在のEFの実装では、複数の問題につながる:

  • タイプは、テーブルのDDL定義で前にその使用法に定義する必要があります。そのため、タイプは、データベース初期化子のメソッドSeed(トリガーやインデックスなどの他のデータベース構造体でよく使用される)で定義することはできません。この作業を行うには、IDatabaseInitializerを実装し、データベースの作成とテーブルの作成を個別に行う必要があるため、完全な新しい初期化子を作成する必要があります。 Hereは、データベース初期化子を作成する方法の例です(これは、アプリケーションを実行するたびにテーブルを再作成します)。このロジックは、EFにおそらく内部で行われるので、スケッチからモデルの変更を反映
  • の作成、データベースの初期化は、より複雑である
  • また、あなたは初期化子を持っている場合でも、あなたはまだ最大の直面すでに
  • が作成されていない、そのタイプを確認する追加する必要がありますブロッカー。 EFでは、列のユーザー定義型を定義する準備ができていません。流暢なAPIでColumnAttributeHasColumnTypeのどちらもカス​​タム型を受け入れません。したがって、マッピングでは基本的なプリミティブSQL型を指定する必要があり、これらのカスタム型はEFによって生成されるテーブルDDLで使用されます。したがって、カスタムデータベースイニシャライザのポストプロセスがSQLスクリプトを生成し、基本タイプをカスタムタイプ(実際には醜い解決策)に置き換えない限り、テーブルはそれらを使用しません。
関連する問題