2

最初に移行とコードで EF 5 を使用しています。それはすべてかなりうまく機能しますが、解決したい問題や質問がいくつかあります。

簡単な例から始めましょう。ユーザー テーブルとユーザー タイプ テーブルがあるとします。ユーザー タイプ テーブルは、アプリの列挙型/ルックアップ テーブルです。したがって、ユーザーテーブルには UserTypeId 列と、UserType への外部キー ref などがあります。私の poco には、列挙型を持つ UserType というプロパティがあります。

UserType テーブルに初期値を追加 (または後で値を追加/変更) し、初期マイグレーターなどでテーブルを作成するには、データベース内の実際のテーブルを表し、マップ ファイルで使用するために、UserType テーブル poco が必要です。ユーザー poco の UserType プロパティを、UserType poco の UserTypeId にマッピングしました。だから今、私はコードファースト/マイグレーション/コンテキストマッピングなどのためのポコを持っていて、私は列挙型を持っています. 両方に同じ名前を付けることはできないので、UserType という名前の poco と enum 用の何かを持っているのでしょうか、それとも UserType の poco を UserTypeTable などにするのでしょうか?

しかし、もっと重要なのは、コードが最初にどのように機能するかという重要な要素が欠けているのでしょうか? 上記の例を試し、Add-Migration を実行しましたが、列挙型のルックアップ テーブルが追加されません。

4

2 に答える 2

2

あなたの質問とあなたが混乱していることを私がきちんと理解していれば、

Enums support has nothing to do with lookup tables on the Db side.  

列挙型は単に、列挙型であり、基本的に「int」型に変換されるプロパティをクラスに持つことを許可しているだけなので、そこには他に何もありません。

詳細については、Enum-s サポートに関する Julie Lerman のこのビデオをご覧ください。

お役に立てれば

于 2012-04-13T17:29:21.913 に答える
0

私の経験では、列挙型はルックアップ クラスよりもコードにとって重要であるため、適切な名前を付けます。また、モデル内のユーザーとは関係なく、ルックアップ クラスを分離したままにします。本当にルックアップ専用の場合は、ユーザーからぶら下げる必要はありません。を含む列挙型はDescriptionAttribute、コード内のルックアップを満たすことができます。

UserTypeLookupそれはあなたがそれを使用するものに聞こえるので、良い名前かもしれません. その後、そのクラスを使用してテーブルを維持できます。

UserTypeLookup最初に ef コードでとの関係をマップしないと仮定するとUser、DB で手動で作成する必要があるのはUserType、テーブルの列とUserテーブルの PK の間の外部キーの関係だけUserTypeLookupです。UserTypeLookupは引き続きエンティティである可能性があり、関係を設定しなくても、EF はそのエンティティの DB テーブルを生成する必要があります。

于 2012-04-13T17:26:08.633 に答える