このアプローチは、APIコントローラが、ハンドオフオブジェクトをアクションデリゲートに置くラッパーを使用する前に見てきました。次に、デリゲートが使用されると、モデルを受け取り、Voidを返すサービスレイヤメソッドと通信します。考え方は、モデルを外側のスコープから渡すことです。API contollersがサービスと対話するためのAPI代理人の代理代理
//Controller Base
public void Wrapper(Action<UnitOfWork> action)
{
action(new UnitOfWork());
}
//Controller
[HttpPost]
[Route("user")]
[ResponseType(typeof(Member))]
public async Task<IHttpActionResult> PostUser(Member user)
{
Wrapper(uw => { service.Get(uw, user); });
return Ok(user);
}
//Service
public void Get(UnitOfWork uw, Member model)
{
model = uw.MemberRepository.Get(u => u.UserId == id).FirstOrDefault();
//Member m = uw.MemberRepository.Get(u => u.UserId == id).FirstOrDefault();
//model.Created = m.Created;
//model.ExpiryInDays = m.ExpiryInDays;
//model.Id = m.Id;
}
私は上記をしようとするが、コントローラ上のオブジェクトがサービスで行った変更を反映していない...私はこれはいいアプローチであると感じ、私は前のプロジェクトでそれを見てきました。
をチェック構造体ではありません –
ありがとう、私はそれがクラスとして宣言されていることを確認することができます。クラスと宣言された他のオブジェクトを試しましたが、何もしません –
わかっているように私の問題を反映するようにコードを更新しました。私はEFリポジトリからデータを取得してモデルを変更しようとしています。コメントアウトされたコードが機能します。 EFコードはコントローラー側の変更を反映していません –