我正在尝试使用MVVM Light和SQL Server CE作为数据库创建WP7应用程序。为此,我使用sqlmetal.exe(1)生成了一个datacontext。
如果我在手机上运行应用程序,这可以正常工作。但是在尝试显示设计时数据时,我无法在设计时代码中创建DataContext
的实例。可以这样做吗?我尝试的另一种方法是创建Table<MyDataObject>
的实例,但System.Data.Linq.Table没有构造函数。
所以我的问题是,是否有可能以某种方式从代码中创建DataContext
的实例,或者在不丢失设计时数据的情况下,有另一种方式与我的数据库进行交互。
(1)实际上我使用了一个不同的方法,使用库项目能够直观地设计并将设计器文件复制到我的WP7项目中。如果我是正确的话,结果是相同的。
答案 0 :(得分:0)
经过多次尝试失败后,我无法通过编程方式模拟DataContext
对象。所以我以不同的方式解决了我的问题。
我创建了一个服务接口来查询数据库中的数据。对于SQL CE数据库中的每个表,我都必须手动创建一个函数。
public interface IPayDataService {
IQueryable<Account> GetAccounts();
IQueryable<User> GetUsers();
IQueryable<PayEntry> GetEntries();
}
在真实数据对象中传递相应的表。在设计时对象中,我在代码中创建对象,并通过IQueryable
返回AsQueryable()
。通过使用IQueryable
,我确保查询保持优化(在本例中为Linq2Sql)。
虽然这不太理想,需要更多的手动代码编写,但我设法让设计时数据再次运行。