0

アプリケーションに次のようなサービス レイヤーを実装しました: http://www.asp.net/learn/mvc/tutorial-38-cs.aspx

(私はLinq2SQLを使用しています)。今、Edit ActionResult の実装に問題があります。Create (Post) ActionResult で、サービス メソッドを使用します。

if (_service.CreateMovie(movie))
{
     return RedirectToAction("Details", new { id = movie.ID });
}
else
{
     return View(movie);
}

大丈夫。Edit ActionResult での私の問題は次のとおりです。エンティティの更新を実装するにはどうすればよいですか?

リポジトリには、次の Update メソッドがあります。

public bool UpdateMovie(Film movieToUpdate)
{
    try
    {
        _db.SubmitChanges();
        return true;
    }
    catch
    {
        return false;
    }
}

次に、サービスはリポジトリを呼び出します。ただし、フォームで行われた変更はモデルに「送信」されないため、エンティティは新しい値で更新されませんでした。

コントローラーで「UpdateModel」を呼び出すこともできますが、サービスで Validate も呼び出す必要があります。ただし、検証ロジックはコントローラーよりもサービスにありません。

私の質問を理解していただければ幸いです。

4

2 に答える 2

0

基本型の検証なしで、モデルを更新する方法が見つかりません。そこで、UpdateModel とカスタム DefaultBinderMessage を実装しました。現時点では、これで私の主張は十分です。他の場所では、Error-Interface を実装して、サービス レイヤーですべての検証を行うことができます。

于 2009-09-07T07:18:49.333 に答える
0

L2S が認識できるように、最初に新しく挿入されたムービーを取得する必要があります。次に、movieToUpdate から発生した変更をこの新しく取得したムービー オブジェクトに適用すると、変更が保持されます。ムービーを取得するために行ったのと同じコンテキストに SaveChanges を適用する必要があることに注意してください。そうしないと、L2S はそれをどう処理するかわかりません。

于 2009-09-04T14:50:51.793 に答える