指定的表在sql ce上不存在

Posted

技术标签:

【中文标题】指定的表在sql ce上不存在【英文标题】:The specified table does not exist on sql ce 【发布时间】:2012-01-02 14:23:54 【问题描述】:

我遇到了异常

The specified table does not exist [Limits]

当我尝试保存新项目时

 (App.Current as App).context.Limits.InsertOnSubmit(new Limit()  Date = DateTime.Now, Value = inputLimit );//this works

 (App.Current as App).context.SubmitChanges();//here I get exception

我在这一行也遇到了错误:

 var currentLimit = (App.Current as App).context.Limits.Where(l => l.Date.Date == DateTime.Now.Date).FirstOrDefault();

这是一个“模型”

public class CalCounterContext:DataContext

    public CalCounterContext(string connstring):base(connstring)
    
    

    public Table<Limit> Limits;
    public Table<Meal> Meals;



[Table]
public class Limit

    [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "Int NOT NULL IDENTITY", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
    public int Id  get; set; 

    [Column]
    public DateTime Date  get; set; 

    [Column]
    public int Value  get; set; 

有时有效,有时无效。我的问题可能是什么原因?

【问题讨论】:

能否提供包括 InnerException 在内的完整异常消息? 您是否在实例化数据上下文时检查是否存在数据库。你能显示你在哪里创建数据库的代码吗? 抱歉,没有回复您,但我无法重现此错误。我一拿到就回复你。感谢您的关注 【参考方案1】:

当您在更高版本的数据库中添加表时,通常会发生这种情况,然后使用正在使用的表。当您创建数据库上下文时,请检查它是否是最新的,如果不是,请使用 DatabaseSchemaUpdater 类作为described here 更新数据库。如果只是在您创建应用程序时,请卸载并重新安装应用程序。

另外,我遇​​到了一个奇怪的问题,即使应用程序在没有任何理由的情况下投入生产,我也会间歇性地收到此错误。当我启动应用程序然后点击主页或返回按钮以快速结束它时,通常会发生这种情况。我最终重新实现了用于在基本数据库类中实例化我的 ITable 变量的 GetTable 函数,以便它会进行硬检查以查看表是否实际存在:

public Table<TEntity> VerifyTable<TEntity>() where TEntity : class

    var table = GetTable<TEntity>();
    try
    
        // can call any function against the table to verify it exists
        table.Any();
    
    catch (DbException exception)
    
        if (exception.Message.StartsWith("The specified table does not exist."))
        
            var databaseSchemaUpdater = this.CreateDatabaseSchemaUpdater();
            databaseSchemaUpdater.AddTable<TEntity>();
            databaseSchemaUpdater.Execute();
        
        else
        
            throw;
        
    
    return table;

【讨论】:

感谢 BK 您帖子中的链接 msdn.microsoft.com/en-us/library/hh394022%28v=vs.92%29.aspx 对我帮助很大。 我最近也遇到这个问题,谢谢解答!【参考方案2】:

我遇到了与您相同的间歇性错误。尝试从设备中删除数据库并再次安装应用程序。我发现我的问题是由于我对模型进行更改而引起的,当我重新运行应用程序时,我会收到此错误。

【讨论】:

以上是关于指定的表在sql ce上不存在的主要内容,如果未能解决你的问题,请参考以下文章

SQL/SAS:创建表在哪里不存在?

Azure SQL 数据库 -> 添加索引 -> 对象“/.rem”已断开连接或在服务器上不存在

类型 IInstance 上不存在 typescript 文件属性 selectpicker 中的错误

为啥我的 LINQ INSERTS 没有在 SQL Server CE 3.5 中持续存在?

如何根据不同服务器中不同数据库中存在的表在服务器中的数据库中创建视图?

如果 Spring Boot 上不存在 Microsoft SQL Server 自动创建架构(application.properties)