0

以下のスクリーンショットは、私のモデルのエンティティ(URL)です。ParentIdフィールドは、自己参照FK(Url.Idを指す)です。スクリーンショットの下部にこのナビゲーションが表示されます。

代替テキスト

EDMXを生成するSQLとDBでは、自己参照FKはFK_Urls_Parentと呼ばれます。

-- Creating foreign key on [ParentId] in table 'Urls'
ALTER TABLE [Urls]
ADD CONSTRAINT [FK_Urls_Parent]
    FOREIGN KEY ([ParentId])
    REFERENCES [Urls]
        ([Id])
    ON DELETE NO ACTION ON UPDATE NO ACTION;

私の質問は次のとおりです。

  1. EFがその1つのFKからUrls1とUrl1を生成したのはなぜですか?Url1は、「FromRole」Urls1である0または1のプロパティです。Urls1は'FromRole'Urls'ToRole'Urls1です。EFは、URLテーブルとまったく同じナビゲーションプロパティを作成しているようです。なぜこれを行うのでしょうか。また、必要なナビゲーションプロパティであるUrls1を生成するために何かを行うことができますか?
  2. さて、それほど重要ではありませんが、FK名またはDB内の何かに基づいてNavigationプロパティの名前を制御できますか?私はそれが「Url1」と名付けられるのが嫌いです。「親」の方がいいのですが、モデルを再生成するたびにデザイナーで手動で変更する必要はありません。

ありがとう。

4

1 に答える 1

2

関係の両側をモデル化しています。つまり、プロパティの 1 つが、このエントリの が指すエントリになりますParentId。もう 1 つは、ParentIdフィールドがこのエントリを指すエントリです。リレーションシップ プロパティで片側を無効にするか、意味のある名前に変更できます。たとえば、ParentUrlや などChildUrlsです。

私は、自分でプログラムを開かずにプロパティ関係ダイアログにアクセスする方法を 100% 確信しているわけではありません。リンクが選択されると、(デフォルトで)右下のプロパティウィンドウに表示されることを私は知っています。

この変更をモデルの再生成全体で何らかの方法で永続化する限り、これを行う方法はありません。私も多くの時間を節約できるので、他の誰かが知っていることを願っています!

于 2010-12-15T23:08:34.037 に答える