2009-05-01 18 views
0

私はEntity Frameworkを初めて使用しており、最初のMVCアプリケーションを構築するプロセスに入っています。私は単純なエンティティの作成ビューを実装していますが、(SQL Express 2005)ID列の主キーに問題があります。私が理解しているように、フレームワークはID列を処理し、SQLデータベースにID値を生成させる必要があります。Entity Framework ID列が機能しない

ID値を設定せずに[作成]ビューを使用して保存しようとすると、「値は必須です」というエラーが表示されます。 IDの値を指定すると、データベースのIdentity値を使用してデータベースに保存されます。私が指定した値ではなく、T-SQLが明らかに正しく生成されていることを確認してください。

アイデンティティプロパティは、データベース内のID列に設定されているとStoreGeneratedPatternがモデルに「アイデンティティ」に設定されている(下記参照): -

プロパティ名=「ID」タイプ=「INT」のNullable = "false" StoreGeneratedPattern = "Identity"

私に何か不足していますか?この列に値が必要でないことをモデルにどのように伝えますか?

答えて

0

"値が必要です"というエラーがどこから来たのかは言わないでください。クライアントモデルの整数値はデフォルトでゼロになるため、常に値があります。スタックを見ることなく、私の野生の推測は、エラーはどこか他の場所から来ているということです。エラーが表示されたらスタックを見て、アプリケーションのどの部分がエラーを起こしているかを調べます。

+1

をルーティングルールを追加することができますそうです。それはデータベースとは関係ありません。 UpdateModel(entity)は、FormCollectionを受け取ると失敗します。それを別の方法で試してみてください。ModelState.IsValid =エンティティを渡すとfalseです。 IDフィールドに「値は必要です」検証が返されます。 –

1

謎解き。問題は、ID列の列名として常に「ID」を使用するという命名規則の結果であると思われます。

私は、ルーティングエンジンが

アクションとして、これを拾っている

http://.../Vacancy/Create

呼んでいた=作成します。 ID = "" MapRouteから

"{コントローラ}/{アクション}/{ID}モデルの" VacancyID "

はにID列名を変更し、" それが必要として、すべての動作出来上がり。

0

私はカスタムルートを作成し、それは彼らがとにかくためにあるものだ...

0

あなたのデータベーススキーマを変更したくない場合は、あなたがidパラメータなし

routes.MapRoute(
    "Create", 
    "{controller}/Create", 
    new { action = "Create" } 
); 
関連する問題