WCFサービスから関連データを取得し、Windowsフォームアプリケーション内で更新し、更新されたデータをWCF経由でデータベースに保存するためのn-tierソリューションを作成しました。アプリケーション、WCFサービス、データベースはすべて異なるマシン上にあります。エンティティフレームワーク、WCFおよび更新
取得されるデータは、オブジェクトと子オブジェクトで構成されてい...
public Product Select(string catalogueNumber) {
return (from p in this.ProductEntities.Products.Include(@"Tracks")
where p.vcCatalogueNumber == catalogueNumber
select p).FirstOrDefault() ?? new Product();
}
クライアントアプリケーションによって適用されたアップデートができるだけでなく、既存のコンテンツを更新し、また、追加の「トラック」オブジェクトを挿入します。
私は、クライアントアプリケーションからバックProductオブジェクトを受け取ったとき、私はしかし、私はいくつかのフープを介してジャンプする必要が正常にすべての変更を保存するためには、正しくアップデートのすべてを見ることができます...
public void Save(Product product) {
Product original = this.Select(product.vcCatalogueNumber);
if (original.EntityKey != null) {
this.ProductEntities.ApplyPropertyChanges(product.EntityKey.EntitySetName, product);
// There must be a better way to sort out the child objects...
foreach (Track track in product.Tracks.ToList()) {
if (track.EntityKey == null) {
original.Tracks.Add(track);
}
else {
this.ProductEntities.ApplyPropertyChanges(track.EntityKey.EntitySetName, track);
}
}
}
else {
this.ProductEntities.AddToProducts(product);
}
this.ProductEntities.SaveChanges();
}
確かに、これを行う簡単な方法がありますか?
注:午後にはEntityBagプロジェクトの調査に尽力しましたが、EF RTMで動作するように更新されていないことがわかりました。特に、既存のデータを正常に更新する間に、新しいオブジェクトで混合するときに例外がスローされます。
役に立つことを願っています
}
:あなたのシナリオでは
はこのようなものになります。残念ながら、私は最近EF&WCFの使用を開始しましたが、Astoriaは現在、調査対象となる新技術のリストの別の項目です。ありがとう。 –
私は最終的に(これは主に私がSilverLightで遊んでいたために)これを見て回っていましたが、実際はそれが私が探していた答えだと思います。 –