2016-03-30 14 views
2

私はしばらくアンドロイドを落として、.Netのルーツに戻ってASP/MVCに慣れることに決めました。しかし、私は現在この問題を抱えています:フォームに存在しない必須エンティティの検証に失敗しましたか?

私は簡単なログインフォームを作成しました。その背後にあるモデルはuserIDを持っていますが、私はコードで生成する鍵です。必要なタグ。問題は私が登録に行くとき私はこのエラーが表示されます:

Exception Details: System.Data.Entity.Validation.DbEntityValidationException: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. The validation errors are: The m_IdentityCode field is required.

それは要件を指定する属性はありません。私は人々が[key]属性を使用したいくつかのビデオを見てきましたが、それは要件の問題を生じませんでしたので、何が起こっているのか分からず、助けに感謝します。

[Key] 
public string m_IdentityCode { get; set; } 

編集;

[HttpPost] 
public ActionResult UserRegistration(UserAccountModel user) 
{ 
    if (ModelState.IsValid) 
    { 
     using (AccountDatabaseContext context = new AccountDatabaseContext()) 
     { 

      context.m_UserAccounts.Add(user); 
      context.SaveChanges(); 

      ModelState.Clear(); 
      ViewBag.Message = "You have successfully registered your account. Welcome."; 
     } 
    } 

    return View(); 
} 
+1

しかし、その例外はいつスローされますか?あなたのコントローラーで?あなたのDbSetにエンティティを追加しようとするとき、あなたのキーのプロパティは値 – octavioccl

+0

を持っていなければなりません。私はなぜそれが自動的に1に設定する必要があるのか​​わかりません。なぜなら、SQLで1のデフォルトとして設定しているからです。 – Eidenai

+0

また@octavioccl私は呼び出しコードでポストを更新しました。 – Eidenai

答えて

2

前に、あなたのDbSetあなたが値を使用してKeyプロパティを設定する必要がありますにユーザーを追加します。

using (AccountDatabaseContext context = new AccountDatabaseContext()) 
    { 
     user.m_IdentityCode="someValue"; 
     context.m_UserAccounts.Add(user); 
     context.SaveChanges(); 
    } 

、デフォルトでそのプロパティがnullであるため、あなたの問題があり、そしてあなたがSaveChangesメソッドを呼び出すときEFはあなたのモデルを検証し、鍵のプロパティを設定していないことに気付きます。

+0

Word、私はちょうどuser.m_IdentityCode = Guid.NewGuid()。ToString();あなたがこれを投稿するのを見た。時間をとってくれてありがとう、兄。 – Eidenai

+0

特にそれはそんなに愚かな質問だったので。しかし、私は40 +時間のようにアップしていますので、私の気持ちを聞いてくれてありがとう。 :) – Eidenai

+0

あなたを歓迎してくれてうれしいです;) – octavioccl

関連する問題