WebApiへのPOST呼び出しで、Created(newオブジェクト)を返そうとしています。しかし、Created in ApiControllerには、オブジェクトを取得して残りの処理しか行えないというシグネチャはありません。webapiでオブジェクトの一意の識別子属性を指定します。モデル
私はのようなものを返す場合、それは正常に動作します:
return Created(newobject.blahid.ToString(), newobject);
または私はこれを簡素化したい
return CreatedAtRoute("DefaultApi", new { controller = ControllerContext.ControllerDescriptor.ControllerName, id = newobject.blahid.ToString()}, newobject);
行う場合:
return Created(newobject);
を私がする必要があるでしょうBaseControllerでメソッドを実装する
public class BaseController : ApiController
{
protected new CreatedNegotiatedContentResult<T> Created<T>(T content)
{
var id = GetId(content);//need help here
return base.Created(id, content);
}
}
異なるモデルで異なる方法で呼び出されているオブジェクトの一意の識別子について心配したくありません。 myobjguid、someblahguidなど私はちょうどそれを見つけて "id"としてマークしたいと思うでしょう。私のモデルは
public class Model_A
{
public List<Model_A> ChildModels { get; set; }
[LookForThisAttribute]//I want something like this
public Guid Model_AGuid { set; get; }
public Guid ? ParentGuid { set; get; }
public List<SomeOtherObject> OtherObjects { set; get; }
}
ある場合
は、属性([LookForThisAttribute])または私は、これは一意の識別子として想定される男であることを指定するためにすべての私のモデルで設定できるものがあると言うならばI今までそれを探します。Entity Frameworkの[Key]属性とよく似ています。 Entity Frameworkは、何を呼び出すかに関係なく、主キーとなることを認識します。
GetId(Tコンテンツ)メソッドはオブジェクトを取得し、[LookForThisAttribute]
のプロパティの値を返すことができますか?