1

平均スコアの映画エンティティがあるとします。ユーザーは映画を評価できます。そのために、クライアントで datacontext.savechanges を呼び出し、Rating オブジェクトをサーバーに送信します。サーバー上で SaveChanges メソッドが呼び出され、BeforeSaveEntity メソッドで映画の平均スコアを調整します。

問題は、サーバーの SaveChanges メソッド (たとえば、SaveResult オブジェクト内) から平均スコアを返す方法です。

映画エンティティを SaveResult Entities リストに追加できると思っていましたが、次のようになりました: - saveBundle パラメータ内から属性にアクセスする必要があります - DB を再クエリする必要があります。

ありがとう

ニコラス

4

2 に答える 2

1

はい、可能です。

通常どおり、EDMX に対してコントローラーを記述します。私たちにとって、それは次のようなものに変換されます。

public class PersonalizationController : MultiTenantBreezeController<PersonalizationEntities>

PersonalizationEntities は ObjectContext です。

次に、サーバー上で SaveChanges を定義するだけです (オーバーライドは気にしないでください。基本クラスがあります)。

[HttpPost]
public override SaveResult SaveChanges(JObject saveBundle)
{
     // Deserialize the object that needs to get saved (ApplicationDefaults is my DTO)
     var applicationDefaultsList = JsonConvert.DeserializeObject<List<ApplicationDefaults>>(saveBundle.SelectToken("entities").ToString());

     // Do whatever logic you need to save the data
     using (var repo = ServiceLocator.Current.Container.Resolve<IUserPreferenceRepository>())
     {
          // Your save logic here
     }

     // Construct the save result to inform the client that the server has completed the save operation
     var keyMappings = new List<KeyMapping>();
     return new SaveResult()
     {
         Entities = applicationDefaultsList.Cast<object>().ToList(),
         Errors = null,
         KeyMappings = keyMappings
     };
}
于 2014-04-29T19:16:40.533 に答える