1

まず、Asp.Net MVC および ADO.NET エンティティ データ モデルの新機能です。

例を練習しているときにテーブルを作成しましたが、 PKの「識別仕様」を trueに設定するのを忘れていました。

エンティティ データ モデルを使用して MVC アプリケーションのモデルを作成し、正常に動作しました。

後で、DB のそのテーブルの「ID 仕様」を true に設定しました。

レコードを挿入しようとすると、例外が発生し、レコードが挿入されません。

{"IDENTITY_INSERT が OFF に設定されている場合、テーブル 'Contacts' の ID 列に明示的な値を挿入できません。"}

これはモデルで作成されたクラスです。これは、DB のスキーマの変更に従って変更する必要があります。

public static Contact CreateContact(int id, string firstName, string lastName, string phone, string email)
        {
            Contact contact = new Contact();
            contact.Id = id;
            //
            return contact;
        }

上記のメソッド シグネチャに「Id」変数は必要ありませんが、それでも自動生成されます。

データベース スキーマが更新された場合、モデルをそれ自体または手動で更新するにはどうすればよいでしょうか。

:C#、ASP.NET MVCを使用

ありがとう

4

1 に答える 1

1

DB スキーマを正しく構成し、モデルを右クリックして [データベースからモデルを更新] を選択します。これにより、EDMX の SSDL が修正され、idストアが生成されたことが EF に通知されます。

idただし、メソッドから引数は削除されませんCreateContact。EF のコード ジェネレーターは、null 非許容のすべてのプロパティをこのメソッドのシグネチャに入れます。ただし、SSDL を更新すると、保存時に例外が発生しなくなります。このメソッドを使用する場合 (必須ではありません)、0 を渡すだけです。

于 2010-02-04T13:23:35.063 に答える