2016-07-10 4 views
0

WebAPI MVCプロジェクト内では、ServiceKeyというEFオブジェクトがあります。それはちょっとしたコラムです。Scaffolded Web APIのCreate Actionパラメータがnullですか?

ビューを持つMVC 5コントローラを生成する(EFを使用)。それは私が必要とするすべての方法を作成します。作成、編集、削除などこれは明らかに、「すぐに使える」コントローラとビューです。事前生成されたCreate関数を使用すると、NULLパラメータが返されます。ここでは、生成されたコードは次のとおりです。

// POST: ServiceKeys/Create 
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598. 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Create([Bind(Include = "id,serviceKey,consumer,created,modified,deleted,deletedDate")] ServiceKey serviceKey) 
    { 
     if (ModelState.IsValid) 
     { 
      db.ServiceKeys.Add(serviceKey); //throws exception here 
      await db.SaveChangesAsync(); 
      return RedirectToAction("Index"); 
     } 

     return View(serviceKey); 
    } 

serviceKeyはnullであるので、EFは、企業がnullにすることはできませんというエラーがスローされます。

Value cannot be null. 
Parameter name: entity 

確かに、ここに私のルートです:

ウェブAPIルート:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

RouteConfig:

なぜこれが問題なく機能していますか?

答えて

0

ため息

あなたは、テーブルと同じ名前の列が明らか場合は、1つは、これはこれで、EFおよびMVCは混乱しているので。

この特定の例では、テーブルは列と同じ名前が付けられています。これはテストであり、dbコンテキストを拡張するとserviceKey guidが自動生成されるため、フォームに入力されませんでした。

したがって、model.serviceKey列は実際にはServiceKey オブジェクトであり、nullだったので、それはコーンファジーになっていると考えました。

slow clap for Microsoft

関連する問題