我正在为Windows Phone 8构建一个需要本地数据库的库。以下是我对LINQ-to-SQL如何工作和创建数据库的理解:
DataContext
对象是从相应的类创建的。Table
的成员。现在,DataContext
类必须是硬类型。在构建库时,我不知道用户需要哪些表。显然,我不能使用硬打字DataContext
。此外,CreateTable()
方法在此方案中不存在。如果我只是开始使用GetTable
方法,则会出现Table does not exist
错误。
问题是,如何在不使用硬类型DataContext
的情况下获取创建表?
P.S。:我的情况与this类似。
答案 0 :(得分:0)
在Windows Phone的LINQ-to-SQL场景中,初始化后无法将表添加到DataContext
。在我的例子中,解决方案是接受来自库用户的整个DataContext
,如下所示:
首先,您提供了一个用户可以从中派生的基类。
public class DataContextBase : DataContext
{
public DataContextBase(string connectionString) : base(connectionString)
{ }
//Tables for library's internal workings.
public Table<SyncTimeStamp> SyncTimeStamps;
}
然后,用户可以在配置库时传递派生类。库可以接受这是方法参数:
public async void ConfigureSQLCE<T>(T mainDataContext) where T : DataContextBase
{
//Do whatever with it. MainDB is a dynamic here!
MainDB = mainDataContext;
}