45
  • だから私は自分のedmxを作った。
  • 次に、データベースを少し変更し、列を NOT NULL から NULL を許可するように変更します。
  • edmx に移動し、右クリックして [データベースからモデルを更新] を選択します。

今、私は自分のプログラムに入りましたが、実際には更新されていません...列にnullを入れることはできません。edmx を正しく更新するにはどうすればよいですか? ありがとうございました。

4

11 に答える 11

81

EDMX からの更新/削除は常に機能するとは限りません。[データベースからモデルを更新] をクリックしてもモデルが更新されない場合は、DB のビュー/テーブルを更新したとします。次の手順を実行します。

1) モデル ダイアグラムからビュー/テーブルを削除します
2) EDMX を xml ビューに切り替えます (edmx ファイルを右クリックし、[開く] を選択します)
3) xml エンティティ要素を検索して削除します
4) EDMX ビューに戻ります
5) [データベースからモデルを更新] をクリックします

これは、DB に加えたあらゆる種類の変更を EDMX に反映する必要があります。面倒ですが、問題なく動作します。

理想的な世界では、データベースからの更新モデルが DB から EDMX への変更を同期することを期待します。しかし、それはほとんどの場合うまくいきません。

于 2009-10-08T01:33:46.380 に答える
20

私が成功したのはこれ(VB.Net)です。

  1. 必要に応じてデータベースを更新する
  2. EDMX モデルで [データベースから更新] を選択すると、グラフィカル モデルに新しい構造/テーブルが正しく表示されます
  3. すべての関連ファイルが表示されるようにプロジェクトを展開します
  4. 「tt」拡張子を持つ 2 つのファイルが重要です。最初に .Context なしのファイルを取得します。tt 拡張子の前。それを右クリックして、[カスタム ツールの実行] を選択します。

カスタムツールを実行

  1. .Context を使用して .tt ファイルに対して同じことを行います。その名前で。すべてのコードと論理モデル クラスが更新されます。
于 2012-10-09T12:42:09.493 に答える
14

データベースから更新モデルを選択することは、EDMX を更新するための最良の方法です。概念レイヤーで更新されない特定のプロパティがあります。

Model Viewer ツールボックスで Store レイヤーを表示して、Store レイヤーが更新されていることを確認します。ストアが適切に更新されている場合は問題なく、データベースは同期されています。その場合は、ビジュアル デザイナーに移動し、フィールドをクリックしてプロパティに移動し、概念側で NotNull プロパティを更新します。

于 2009-03-27T15:52:05.733 に答える
5

はい、ほとんどの場合は機能しません:-/

"最善の方法" (体系的に機能するため) は、EDMX ファイルを削除して再度生成することです。ただし、App.config で接続文字列を削除することを忘れないでください (そうしないと、VS2008 ウィザードが既定のエンティティ名にサフィックスを追加します)、キャッシュをクリアします。

生産性が劇的に低下するため、これらのツールが次のリリースでより適切に機能することを願っています...

于 2009-12-15T15:48:41.110 に答える
4

これが最も簡単な方法です。

  1. .edmx ダイアグラムからビュー/テーブルを削除します。
  2. ここで、データベースからのモデルの更新を使用して、テーブルを再度追加します。
于 2014-06-13T21:39:52.070 に答える
4

1.EDMXファイルを更新後、プロジェクトをビルドします。

2.ソリューション エクスプローラーで .tt ファイルを右クリックします。

3.「カスタムツールの実行」オプションを選択します。

これにより、.tt ファイルが更新されます。

出典:こちら

于 2015-04-24T11:35:37.963 に答える
2

この答えはより良いです: https://stackoverflow.com/a/23886016/1014884

手動で編集するとエラーが発生するか、ウィザードなどのツールを使用すると失われます。ウィザードを使用した削除と更新は、はるかに優れています。

于 2014-10-02T16:46:23.320 に答える
2

VS の XML エディターで edmx ファイルを開き、更新の試行時にエラーが発生したかどうかを確認します。

  <!--Errors Found During Generation:
      warning 6013: The table/view 'foo.dbo.snafu' does not have a primary key   
      defined and no valid primary key could be inferred. This table/view has  
      been excluded. To use the entity you will need to review your schema,  
      add the correct keys and uncomment it.

  <EntityType Name="snafu">
    <Property Name="snafu_column" Type="smallint" />
  </EntityType>-->

上記の場合...問題のテーブルに主キーを追加すると、「データベースからモデルを更新」が機能しました。

于 2010-01-14T19:01:12.463 に答える
1

たとえば、文字列属性の最大長は更新されません!

TFS を使用している場合、ファイルを削除するのはよくありません。履歴を保持し、他のユーザーに影響を与えないようにする必要があります。

私にとっては、edmxファイルを完全に再作成するために使用できる小さな別のプロジェクトを使用して動作します.xmlで開き、既存のファイルにコピーして貼り付け、VSが.csファイルを再作成するためにモデル内の1つの形状を移動します. 出来上がり、更新されました。

于 2010-10-27T20:09:25.707 に答える