24

EF を使い始めたばかりで、かっこいいと思いましたが、問題が発生しました。

問題:
テーブル User 内の列の DB スキーマを変更しました。以前は Varbinary(50) でしたが、VarChar(50) に変更し、MyModel.edmx デザイナー内で [データベースからモデルを更新] を選択しました。 [完了] をクリックすると、このエラーが発生しました。

エラー:

   エラー 2019: 指定されたメンバー マッピングが無効です。
    メンバーの型「Edm.Binary [Nullable=False,DefaultValue=,MaxLength=100,FixedLength=False]」
   タイプ 'LearnDBModel.User' の 'Email' は SqlServer.varchar と互換性がありません
    [Nullable=False,DefaultValue=, MaxLength=50,Unicode=False,FixedLength=False]' メンバー '電子メール'
    タイプ「LearnDBModel.Store.User」。

修正方法を教えてください

4

6 に答える 6

61

以前に同様の問題に遭遇したことがあり、それを解決する方法はモデルからテーブルを削除することであることがわかりました。モデルを保存して閉じます。次に、モデルを再度開き、テーブルを再度追加します。

于 2012-05-19T18:51:18.717 に答える
15

Shawn de Wet の解決策は問題なく動作しますが、テーブルを削除したくない場合 (たとえば、他のテーブルとの関係など) は、別の解決策を使用できます。xml エディターで edmx ファイルを開き、Ctrl + F を押して、

プロパティ名="電子メール" タイプ="バイナリ" Nullable="false" MaxLength="50" FixedLength="false"

次のように更新します。

プロパティ名="電子メール" タイプ="文字列" Nullable="false" MaxLength="50" Unicode="false" FixedLength="false"

保存して再構築します。

于 2014-12-10T03:27:15.053 に答える
1

心配する必要はありません。モデルで影響を受けるテーブルを選択します。観察すると、整数を含む新しい列名のポストフィックスが見つかります (この動作は、その列のデータ型が変更されたためです)。

たとえば、列名が「Samplecolumn」の場合、データベースからモデルを更新すると、Samplecolumn1 の新しい列が取得されます。一般カテゴリのプロパティ ウィンドウを使用して、古い列「Samplecolumn」を削除し、新しい列「Samplecolumn1」の名前を「Samplecolumn」に変更するだけです。

アプリをビルドするだけです。エラーはなくなります。

于 2012-05-19T19:20:10.457 に答える
0

MyModel.edmx xml ファイルに移動し、バイナリを文字列に変更して問題を解決しました

于 2016-07-01T16:04:03.700 に答える
-2

Model.edmx[Diagram] の変更されたテーブルからプロパティを右クリックし、「データベースからモデルを更新」します。保存して実行

于 2015-08-10T06:35:25.613 に答える