【问题标题】:Create a context to a local database using a context class from a WCF data service使用 WCF 数据服务中的上下文类为本地数据库创建上下文
【发布时间】:2012-06-28 13:57:54
【问题描述】:

我创建了一个 helloworld 应用程序。在服务器端,有一个由实体框架和 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);

这只是抓取博客。现在我想使用我上面使用的相同类(博客、博客上下文)将这些博客放入本地数据库。如果模型发生变化,它可以帮助我修复 2 个不同的类。我怎样才能做到这一点?请准确地说,我是 WP7 的新手。

【问题讨论】:

    标签: c# .net wcf entity-framework windows-phone-7


    【解决方案1】:
    • 在服务器上有一个模型
    • 客户端上有另一个模型
    • 尝试将一个模型的对象映射到另一个模式的对象,例如使用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):
        }
    }
    

    【讨论】:

      【解决方案2】:

      首先,我建议不要尝试保留从 WCF 服务接收到的相同类,而是将它们映射到手机上的模型。

      如果您计划使用SQLCE,您需要创建模型并标记它们以告诉 EF 它们如何映射到您的数据库。尝试对 WCF 创建的东西使用部分类可能是可能的,但听起来会很痛苦。

      SQL Compact Toolbox 非常出色,一旦您的数据库模型完成,就可以为您完成所有工作。在手机上使用 SQL CE 时,我通常会结合使用 Server Explorer 和 SQL Compact Toolbox。

      更新: 使用可移植类库,您可以在项目之间共享 WCF DTO 库,但我仍然不会尝试使用 EF 属性标记它们。

      【讨论】:

      • @abatishchev 感谢您的编辑,但 EF 属性可能会令人困惑,因为手机不支持 EF。
      • 我明白了,让 OP 澄清一下,以确定他在手机上使用了什么。
      • 也许“DataContext”这个词更合适。 “TimelineItem 的每个属性都装饰有一个 Column 属性,它告诉 DataContext 该属性存储在同名的列中。”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2018-09-05
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多