【问题标题】:InvalidProgramException in DataContext constructorDataContext 构造函数中的 InvalidProgramException
【发布时间】:2014-07-05 20:53:22
【问题描述】:

我正在使用 LINQ to SQL 连接到 Windows Phone 8.1 上的本地数据库。当我尝试实例化我的 DataContext 时,我在构造函数行上得到一个 InvalidProgramException 。我的 DataContext 如下所示:

public class AppDataContext : DataContext
{
    public AppDataContext(string connectionString) : base(connectionString)
    {
    }
}

我使用的连接字符串是我从this tutorial得到的:

var db = new AppDataContext("Data Source=isostore:/MyDatabase.sdf");

我浏览了互联网,但没有找到任何与 Windows Phone 8.1 相关的内容。 同样的代码在 Windows Phone 8 上运行良好。

我认为这里的问题是我的连接字符串。也许 8.1 SDK 发生了一些变化?

【问题讨论】:

  • 这是Silverlight 应用还是Universal 应用?路径的isostore:/ 部分对后者无效。
  • 这是一个 Windows Phone 应用商店应用,没有 Silverlight。
  • 看来这个异常是独立于我使用的连接字符串抛出的。
  • 对于通用应用程序,您需要使用 ms-appdata:// uri 方案。
  • "Data Source=ms-appdata://MyDatabase.sdf" 不起作用。

标签: c# windows-phone-8 linq-to-sql datacontext windows-phone-8.1


【解决方案1】:

我有同样的问题。实际上,我必须手动导入 System.Data.Linq.dll 文件作为 Windows Phone 8.1 SDK 文件夹中的参考。我不确定为什么存在那个 .dll,因为this article 解释说本地数据库在 Windows Phone 8.1 中不再可用。看起来我正在切换到 SQLite。

【讨论】:

  • 我不知道。是否可以将 LINQ to SQL 与 SQLite 一起使用?
  • 现在是旧线程,但据我所知,这对于 SQLite 开箱即用不会像预期的那样工作。 DBLinq 我相信提供了一些这样的功能,尽管大多数 SQLite 实现将提供足够的基本查询功能来提高调用效率,然后在返回数据后,如果需要,您可以随时使用 LINQ。
  • 谢谢约翰。那时我最终只使用了 SQLite。它的好处是它带有一个 ORM,所以感觉就像 LINQ to SQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 2012-06-30
  • 2010-10-11
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多