SQL Server CE 表未找到错误
Posted
技术标签:
【中文标题】SQL Server CE 表未找到错误【英文标题】:SQL Server CE table not found error 【发布时间】:2012-01-15 02:29:35 【问题描述】:我正在尝试在 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
,就会收到以下错误:
指定的表不存在。 [福]
这里发生了什么?如果我全新安装该应用程序,一切正常。
【问题讨论】:
SubmitChanges();
是做什么的?如果数据库已经存在,则不会执行该行。
【参考方案1】:
仅当调用 CreateDatabase() 或通过 DatabaseSchemaUpdater.Execute() 方法显式更新架构时,才会创建 Linq To SQL DataContext 的后备表结构。
我怀疑您的情况是,您正在向数据模型添加新的实体类型,但是您实际上并没有通过 DatabaseSchemaUpdater 更新架构。这会导致 Linq To SQL 生成一个查询,该查询引用尚未在数据库引擎中创建的表。
如果您希望能够处理应用程序中的架构更改,我建议您查看 DatabaseSchemaUpdater 类。
http://msdn.microsoft.com/en-us/library/hh133477(v=VS.95).aspx
【讨论】:
以上是关于SQL Server CE 表未找到错误的主要内容,如果未能解决你的问题,请参考以下文章
.dbo 上的 SQL Server CE 字符串错误。句法
SQL Server CE - 内部错误:无法打开共享内存区域