1

Asp.Net MVC 4のEntityFrameworkを使用してスキャフォールディングをテストしています(この記事に従ってください)。ドメインオブジェクトがフィールドでnullを許可し、データベースフィールドがnullを許可している場合でも、エラーメッセージが表示されることを除いて、正常に動作します。

列'IsSuccessful'、テーブル'MyTestProject.Persistence.TestContext.dbo.Prediction'に値NULLを挿入できません。列はnullを許可しません。UPDATEは失敗します。ステートメントは終了されました。

私のドメインオブジェクトは次のようになります。

public class Prediction 
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    public string Description { get; set; }
    public bool? IsSuccessful { get; set; }
}

生成されたWebページには、NotSet、True、Falseの選択肢があるドロップダウンボックスとしてIsSuccessfulが表示されます。データベースでは、列IsSuccessfulはnullを許可します。それでもエラーメッセージが表示されます。TrueまたはFalseを選択すると(データベースに正しく保存されます)、すべて正常に機能しますが、NotSetを選択すると機能しません。

確かにこれを回避する方法があるはずですか?

いくつかの詳細:

  • Visual Studio 2012 RC
  • Asp.Net MVC 4
  • EntityFramework.dllバージョン5.0.0.0
4

1 に答える 1

2

このエラーメッセージは、SQLServerから直接送信されているように見えます。サーバーが列がNULL可能ではないと言った場合、その列はNULL可能ではありません。結局のところ、それは最もよく知っています。

列がデータベースで本当にnull許容であることをトレブルチェックします。また、考慮してください:

  • スキーマが少し異なる別のデータベースを見ているのでしょうか。つまり、正しいDDLスクリプトが適用されていないもの(本当に簡単に実行できます)
  • 同じデータベース内の別のオブジェクトを見ているのでしょうか。特に、あなたはおそらくHalvard.Prediction、コードが見ているように、どこを見ていdbo.Predictionますか?
于 2012-07-27T09:06:19.503 に答える