2009-05-28 14 views
3

現在、ASP.NET MVCで作業する時間があります。私は チュートリアルCreate a Movie Database in ASP.NET MVCをやっています。まだADO.NET Enity Modelを使っています。 LINQエンティティモデルからリストビューを作成することができました。だからここに私の問題がある。 バインド属性は、SQLエンティティでは機能しません。 Ado.NETバインドを除外Asp.net MVCがLINQエンティティで動作しません

 public ActionResult Create([Bind(Exclude="Id")] Movie movieToCreate) 

     { 
      if (!ModelState.IsValid) 
       return View(); 

      _db.AddToMovieSet(movieToCreate); 
      _db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

私のLINQコード

public ActionResult Create([Bind(Exclude = "Id")] Movies movieToCreate) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(); 
     } 
     _db_linq.Movies.InsertOnSubmit(movieToCreate); 
     _db_linq.SubmitChanges(); 

     return RedirectToAction("Index"); 
    } 

ですが、idフィールドと

オリジナルコードが除外されていません。何か案は?ありがとう!

+0

なぜ除外されないのですか? –

+1

movieToCreateにはまだidフィールドが0に設定されていますが、IDフィールドをIDとプライマリキーをdbとし、シーマのautocreated = trueを宣言することで問題を解決しました。 –

答えて

7

あなたのIDプロパティはおそらくintであり、null可能な型ではありません。そのため、バインディング時に除外されても、価値があるはずです。この場合、型のデフォルト値は0です。

IDフィールドのIsIdentityプロパティをtrueに設定し、LINQクラスを再作成してデータベースを適切に設定してください。

+0

クラスレベルではなくアクションレベルで宣言すると、Excludeは機能しません。エンティティの部分クラスで宣言すると、それは動作します。あなたは理由が何であるか考えているのですか? –

+0

@Barbaros Alp、あなたの質問を見ました。(http://stackoverflow.com/questions/2289456/)。そして、私はCraig Stuntzの答えが正しいと思います。 –

+0

はい私は答えとしてマークしましたが、なぜパラメータの順序を変更したときに動作するのですか? –

関連する問題