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



>我正在尝试使用 MVVM Light 和 SQL Server CE 作为数据库创建一个 WP7 应用程序。为了实现这一点,我使用 sqlmetal.exe (1) 生成了一个数据上下文。

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

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

(1)实际上,我使用库项目使用了一种不同的方法来直观地设计并将设计器文件复制到我的WP7项目中。如果我是对的,结果是一样的。

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

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

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

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

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

最新更新