如何在wp7芒果上使用linq2sql数据库,同时保持可混合性?

时间:2012-09-20 15:33:59

标签: sql-server-ce mvvm-light design-time sql-server-ce-3.5 blendability

我正在尝试使用MVVM Light和SQL Server CE作为数据库创建WP7应用程序。为此,我使用sqlmetal.exe(1)生成了一个datacontext。

如果我在手机上运行应用程序,这可以正常工作。但是在尝试显示设计时数据时,我无法在设计时代码中创建DataContext的实例。可以这样做吗?我尝试的另一种方法是创建Table<MyDataObject>的实例,但System.Data.Linq.Table没有构造函数。

所以我的问题是,是否有可能以某种方式从代码中创建DataContext的实例,或者在不丢失设计时数据的情况下,有另一种方式与我的数据库进行交互。

(1)实际上我使用了一个不同的方法,使用库项目能够直观地设计并将设计器文件复制到我的WP7项目中。如果我是正确的话,结果是相同的。

1 个答案:

答案 0 :(得分:0)

经过多次尝试失败后,我无法通过编程方式模拟DataContext对象。所以我以不同的方式解决了我的问题。

我创建了一个服务接口来查询数据库中的数据。对于SQL CE数据库中的每个表,我都必须手动创建一个函数。

public interface IPayDataService {
    IQueryable<Account> GetAccounts();
    IQueryable<User> GetUsers();
    IQueryable<PayEntry> GetEntries();
}

在真实数据对象中传递相应的表。在设计时对象中,我在代码中创建对象,并通过IQueryable返回AsQueryable()。通过使用IQueryable,我确保查询保持优化(在本例中为Linq2Sql)。

虽然这不太理想,需要更多的手动代码编写,但我设法让设计时数据再次运行。