1

この例外が発生します:

データベースが作成されてから、「データベース」コンテキストをサポートするモデルが変更されました。Code First Migrationsを使用してデータベースを更新することを検討してください(http://go.microsoft.com/fwlink/?LinkId=238269)。

私が言ったように、そのエラーは、データベースのテーブルを表すモデルを変更し、データベースに同じ属性(テーブルとフィールド)がない場合に発生します(間違っている場合は修正してください)。

Tbl_Usersデータベースにある、は次の構造になっています

dbUser(int,not null)//key
dbUserId(varchar(50),null)//allow null, right?
dbPassWord(varchar(20),null)

これはモデルです:

public class Tbl_Users {
    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int dbUser { get; set; }
    [MaxLength(50)]
    public string dbPassWord { get; set; }
    [MaxLength(20)]
    public string dbUserID{ get; set; }
    public int? dbLock { get; set; }
}

どうすればnullを設定public string dbPassWord { get; set; }public string dbPassWord { get; set; }て許可できますか?または、このエラーに対する他の解決策はありますか?

アップデート

移行を追加し、ここUpdate-Databaseで説明したようにデータベースを更新すると、影響を受けるテーブルの値は消去されますか?

4

4 に答える 4

2

JonSkeetのコメント文字列はnull許容型です。

public string MyProperty{get;set;}

MyProperty = null; //this is fine
于 2013-03-25T19:29:18.997 に答える
0

MaxLength属性が切り替えられた可能性がありますか?それらはデータベースと一致しません:

public class Tbl_Users {

        [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int dbUser { get; set; }
        [MaxLength(20)]
        public string dbPassWord { get; set; }
        [MaxLength(50)]
        public string dbUserID{ get; set; }
        public int? dbLock { get; set; }
    }
于 2013-03-25T19:31:57.660 に答える
0

バッキングストア(データベース)にdbLock列がないことを訴えて、私が知る限り最善です。コードファーストの移行を有効にしてから、データベースを更新する必要があります。または、まだデータがない場合は、更新をプッシュするだけですが、最終的には移行が必要になることはほぼ間違いありません。

エラーメッセージの内容とほぼ同じです。

于 2013-03-25T19:33:55.750 に答える
0

移行を追加し、ここで説明するようにUpdate-Databaseコマンドを使用してデータベースを更新した場合。影響を受けるテーブルの値は消去されますか?

Changing column to 'nullable'(インデックスではない場合)またはadding new columns(dbLock)- should not delete data。そして、ほとんどの場合、EF / CFの移行は、既存のDb構造に最小限の変更を加えるだけであると信頼されます。もちろん、変更内容によって異なります(名前の変更などには注意が必要です)。

とにかく、Add-Migration-を実行し、作成された移行ファイルを検索します(.cs-が自動的に開きます)-updownセクションの内容がわかります。ここで、EFがあなたのために何をしているかを再確認できます。

そして提案されているように、最初にバックアップしてください-そしてあなたは安全です。

それ以外は、Code First(移行を介して)はオブジェクトへの変更に適応するように作られていますが、ほとんどの場合、プロトタイピングと開発中に使用され、問題が増えるため、本番環境でのこのような変更を最小限に抑えます。

于 2013-03-25T21:26:25.927 に答える