找不到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
的列为int
、double
和DateTime
。当我在没有ClearDatabase()
调用的情况下运行应用程序时,我一尝试访问fooContext.Items
:就会出现以下错误
指定的表不存在。[Foo]
这是怎么回事?如果我刚安装这个应用程序,一切都很好。
只有在调用CreateDatabase()时,或者通过DatabaseSchemaUpdater.Execute()方法显式更新架构时,才会创建Linq-To SQL DataContext的支持表结构。
我怀疑在您的案例中发生的情况是,您正在向数据模型添加一个新的实体类型,但实际上并没有通过DatabaseSchemaUpdater更新架构。这导致Linq-To-SQL生成一个查询,该查询引用尚未在数据库引擎中创建的表。
如果您希望能够处理应用程序中的架构更改,我建议您检查DatabaseSchemaUpdater类。
http://msdn.microsoft.com/en-us/library/hh133477(v=VS.95).aspx