1

私の既存のテーブルには 50 近くの列が含まれており、そのほとんどに「デフォルト」の制約があります。

このデータベース テーブルに基づいてモデルを作成しました。新しい行を挿入しようとするまで、すべて問題ないようでした。一部の列を null にすることはできないという SQL サーバー エラーが発生しました。データベースからモデルを作成すると、デフォルトの制約が保持されなかったようです。

モデルを手動で編集してすべてのデフォルトを追加しましたが、その後挿入は失敗しませんでした。

私の質問は、列に関連付けられたデフォルトの制約を自動的に取得するモデルを作成するにはどうすればよいですか?

mvc4、Visual Studio 2010、SQL Server 2008 r2 を使用。

すべての人が私が必要としているものとは異なることについて話しているように見えたので、Google検索は意味がありませんでした.

4

2 に答える 2

1

Entity Framework Migrations を使用して、デフォルトの DateTime フィールドから GETDATE() への可能性から私の答えを確信していますか? あなたのためにも働くでしょう。変更された MigrationCodeGenerator クラスを使用し、操作リストを反復処理することで、必要なルールに基づいて列を更新し、DefaultValueSql 値を追加できます。

于 2014-01-09T15:21:48.010 に答える
0

さて、あなたにはいくつかの選択肢があります。モデルのデフォルトコンストラクターでデフォルト値を設定できます。これがより良い解決策だと思います。

データベースにデフォルトの制約が必要な場合は、次のdefaultValueSqlようにデータ移行を設定できます。

AddColumn("ExistingTable", "NewColumn",c => c.Int(nullable: false, defaultValueSql: "0"));
于 2013-02-02T17:41:39.350 に答える