1

helloworld アプリを作成しました。サーバー側には、Entity Framework によって生成されたモデル クラスと WCF データ サービスがあります。WP7 アプリで、このサービスへの参照を追加しました。それは私がそのようなことをすることを可能にしました:

DataServiceCollection<Blogs> blogs;
BlogContext svc; // this class was generated with the model class by EF
Uri uri = new Uri("http://localhost:9430/BlogService.svc/");
svc = new BlogContext(uri);
blogs = new DataServiceCollection<Blogs>(svc);

これは単にブログを取得します。ここで、上記で使用したのと同じクラス (Blog、BlogContext) を使用して、これらのブログをローカル データベースに配置したいと考えています。モデルが変更された場合に備えて、2 つの異なるクラスを修正する必要がなくなります。これどうやってするの?正確に言ってください、私はWP7が初めてです。

4

2 に答える 2

0

まず、WCFサービスから受け取ったものと同じクラスを永続化するのではなく、電話のモデルにマップすることをお勧めします。

SQLCEの使用を計画している場合は、モデルを作成してマークアップし、データベースへのマッピング方法をEFに通知する必要があります。WCFが作成するものに対してそれを行おうとすると、部分的なクラスで可能になるかもしれませんが、それは苦痛のように思えます。

SQL Compact Toolboxは優れており、データベースモデルが完成すると、すべての作業を実行できます。電話でSQLCEを操作するときは、通常、ServerExplorerとSQLCompactToolboxを組み合わせて使用​​します。

更新:ポータブルクラスライブラリを使用すると、プロジェクト間でWCF DTOライブラリを共有できますが、それでもEF属性でそれらをマークアップしようとはしませんでした。

于 2012-06-28T14:29:43.563 に答える
0
  • サーバー上にモデルを持つ
  • クライアントに別のモデルがある
  • たとえば、 AutoMapperを使用して、あるモデルのオブジェクトを別のモードのオブジェクトにマップしてみてください

すなわち:

void Save(ServerBlog sb)
{
    using (var db = new LocalContext())
    {
        var clientBlog = new ClientBlog
        {
            Text = db.Text
            // or the same using AutoMapper
        };
        db.Blogs.Add(clientBlog):
    }
}
于 2012-06-28T14:45:26.363 に答える