找不到SQL Server CE表错误

本文关键字:错误 CE Server SQL 找不到 | 更新日期: 2023-09-27 18:20:14

我正在尝试在Windows Phone Mango上使用SQL Server CE。这是我的DataContext:

public class FooDataContext : DataContext
{
    private static readonly string DB_CONNECTION_STRING = "Data Source=isostore:/foo.sdf";
    // Pass the connection string to the base class.
    public FooDataContext() : base(DB_CONNECTION_STRING)
    { }
    // can this be a property?
    public Table<Foo> Items;
    public void ClearDatabase()
    {
        if (DatabaseExists())
        {
            DeleteDatabase();
        }
    }
    public void EnsureDatabaseExists()
    {
        if (!DatabaseExists())
        {
            CreateDatabase();
            SubmitChanges();
        }
    }
}

在主页面的构造函数中,我调用EnsureDatabaseExists()。如果我已经更改了模式,我还包括对ClearDatabase():的调用

//fooData.ClearDatabase();
fooData.EnsureDatabaseExists();

Foo的列为intdoubleDateTime。当我在没有ClearDatabase()调用的情况下运行应用程序时,我一尝试访问fooContext.Items:就会出现以下错误

指定的表不存在。[Foo]

这是怎么回事?如果我刚安装这个应用程序,一切都很好。

找不到SQL Server CE表错误

只有在调用CreateDatabase()时,或者通过DatabaseSchemaUpdater.Execute()方法显式更新架构时,才会创建Linq-To SQL DataContext的支持表结构。

我怀疑在您的案例中发生的情况是,您正在向数据模型添加一个新的实体类型,但实际上并没有通过DatabaseSchemaUpdater更新架构。这导致Linq-To-SQL生成一个查询,该查询引用尚未在数据库引擎中创建的表。

如果您希望能够处理应用程序中的架构更改,我建议您检查DatabaseSchemaUpdater类。

http://msdn.microsoft.com/en-us/library/hh133477(v=VS.95).aspx