8

VS SP1をインストールし、EntityFrameworkを試してみました。

既存のデータベースからスキーマを作成し、いくつかの基本的な操作を試しました。

データベーススキーマの更新を除いて、ほとんどがうまくいきました。

私はすべての基本的な方法でデータベースを変更しました:

  • 新しいテーブルを追加しました
  • テーブルを削除しました
  • 既存のテーブルに新しい列を追加しました
  • 既存のテーブルから列を削除しました
  • 既存の列のタイプを変更しました

最初の3つはうまくいきましたが、タイプの変更と列の削除はデータベースの変更に続きませんでした。

デザイナーの作品を作る方法はありますか?それとも、現時点ではサポートされていませんか?関連資料はまだ見つかりませんでしたが、検索中です。

4

7 に答える 7

6

既存のコードのビルドが壊れる可能性があるため、おそらくそれらは発生しないと思いますが、それは私の推測にすぎません。

ここに私の論理があります:

まず、EF は 1:1 以上のテーブル マッピングであると想定されているため、テーブル A から列を削除しているからといって、そのエンティティにプロパティ Description が存在しないことを意味するわけではありません。そのプロパティを別のテーブルにマップするだけかもしれません。

次に、タイプを変更すると、ビルドが壊れる可能性があります。それが唯一の根拠です。

于 2008-08-15T16:18:22.633 に答える
5

一般に、「データベースからモデルを更新」機能にはまだかなりの数のバグがあることがわかりました。

キーは私にとってキラーです-外部キー関係に変更を加えたり、テーブルに主キーを追加したり、アップデーターを正しく動作させたりするための変更をまだ行っていません(生成されたファイルでコンパイルエラーが発生するという点で)コード)-しかし、問題を解決するには、モデルを削除して再インポートするだけです(1分しかかかりません)-これは明らかに理想的ではありませんが、「新しい」インポートで失敗したことはありません.

于 2008-09-24T18:34:18.470 に答える
1

私が見たデザイナーのデモから、それは完璧なツールではありません。これはバージョン1.0の製品であるため、いくつかの問題点があります。変更タイプはその1つと思われます。デザイナとコード生成を見て、コンパイル時(可能性は低い)または実行時(モデルが実際に実行されるとき)のいずれかで破損することがわかりました。

于 2008-08-19T03:55:57.450 に答える
0

私はあなたの要求と同様のアプリケーションを構築しました。しかし、私の解決策は難しいことでした。私は伝えようとします。

  1. 独自のデータベース管理クラスを作成する必要があります。これらのオブジェクトは、データベーススキーマの作成、更新を担当します(手動で作成しました)。

  2. ADO.NET Teamのブログで優れた記事とソースコードを見たので、このブログからEDMToolsをダウンロードすることもできます。これはオープンソースです。また、モデル生成を実装し、そこからプロジェクトにルーチンを更新することもできます。

  3. 最後に、スキーマが変更されたら、モデルを再作成してバインドし、実行時にデータアセンブリを再構築する必要があります。ただし、最も重要な考え方を知っておく必要があります。データモデルアセンブリをプロジェクトに緩く結合して結び付ける必要があります(この投稿を確認してください) 。

    それ以外の場合は、EF 4.0のリリース(現在はCTP 1)を待つ必要があります。彼らは、DatabaseScriptの作成、削除、更新機能を提供すると発表しました。

良いロック

于 2009-10-09T21:00:40.943 に答える
0

デザイナーまたはXMLファイルから自分で列を削除する必要があります。

于 2008-09-17T07:40:16.803 に答える
0

前述のように、デザイナーから列を削除するだけです。列のデータ型を変更する限り、データベースからモデルを更新してから、テーブル マッピングに移動し、DB で変更した列を選択します。右側の値はモデルを表していますが、奇妙なことにこれは自動的に更新されませんが、右側の列を選択してプロパティに移動し、そこでデータ型を変更してください。ドロップダウンメニューになるはずです。

乾杯。

ルディ

于 2009-08-03T23:41:53.813 に答える
0

私がこれを行っている方法 (そして、あなたが言及したすべてのことと、列の名前を変更している) は、データベースに変更を加え、EF Code First を使用して EF コードを再生成することです。

プロセスを容易にするために、EF Code First のクラスを良くも悪くも改ざんしているわけではありません (無意味に名前が付けられたリレーションの列を含む)。

実稼働データベースに制約のあるデータがある場合、デザイナーまたは ORM スキーマ ジェネレーターは実稼働データベースに変更を加えることができません。これが、DB への変更が実行可能かどうかを常に確認することから始めて、開発データベースで試してから、変更を反映するようにコードを調整する必要がある理由です。

于 2013-02-13T14:03:25.997 に答える