0

我正在为需要本地数据库的 Windows Phone 8 构建一个库。这是我对 LINQ-to-SQL 如何工作和创建数据库的理解:

  • DataContext对象是从相应的类创建的。
  • Table当调用 CreateDatabase() 方法时,它会从 DataContext 对象中读取连接字符串和类型的成员。
  • 该方法在给定位置创建数据库并创建对应于 DataContext 对象成员的表。

现在,这个DataContext类必须是硬类型的。当我正在构建一个库时,我不知道用户需要哪些表。显然,我不能使用硬类型的DataContext. 此外,CreateTable()该场景中不存在方法。如果我只是开始使用GetTable方法,我会得到Table does not exist错误。

问题是,如何在不使用硬类型的情况下创建表DataContext

PS:我的情况和这个差不多。

4

1 回答 1

0

DataContext在 LINQ-to-SQL for Windows Phone 的场景中,初始化后无法添加表。就我而言,解决方案是接受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;
}
于 2013-10-09T07:04:42.933 回答