【问题标题】:sqlite in windows runtime componentwindows运行时组件中的sqlite
【发布时间】:2013-03-27 15:57:01
【问题描述】:

我正在尝试在 Windows 运行时组件中使用 sqlite。但是当我添加 nuget sqlite-net 包时出现一些 219 错误。无法在任何地方弄清楚。有没有类似的问题?

我终于使用了一个商店应用类库来使用 sqlite,并从我的 windows 运行时组件中调用了其中的那些方法。

商店应用中的方法

   public async  Task<IEnumerable<TaskGroup> > GetTaskGroup()
    {
         return await conn.QueryAsync<TaskGroup>("select * from TaskGroup");

    }

在win运行时组件中调用方法

public IAsyncOperation<IEnumerable<TaskGroup>> GetAllTaskGroup()
    {
        return m_objDAL.GetTaskGroup().AsAsyncOperation();

    }

我收到以下错误

Error   1   Method 'Tasker.BAL.TaskManager.GetAllTaskGroup()' has a parameter of type 'Windows.Foundation.IAsyncOperation<System.Collections.Generic.IEnumerable<SQLLite.Models.TaskGroup>>' in its signature. Although this generic type is not a valid Windows Runtime type, the type or its generic parameters implement interfaces that are valid Windows Runtime types. Consider changing the type 'SQLLite.Models.TaskGroup' in the method signature. It is not a valid Windows Runtime parameter type.   

将商店应用程序方法设为私有可根据此博客解决它 http://rarcher.azurewebsites.net/Post/PostContent/23

但我不能使用它,因为它是私有的,它会给我带来访问问题。

有什么办法吗?

【问题讨论】:

    标签: sqlite windows-8 windows-runtime windows-store-apps


    【解决方案1】:

    我不明白这些错误是什么,但是您是否首先通过“工具”>“扩展”安装了 SQLite for Windows Runtime? sqlite-net 是 LINQ 查询库

    【讨论】:

      【解决方案2】:

      Windows 运行时组件有many limitations 与它对外公开的类型有关。

      当你包含sqlite-net 时,它的所有类型都被声明为公共的,并且会被组件有效地公开。这就是您所看到的错误的原因。

      您可以采取以下两种方式之一来解决问题:

      • 您可以将SQLite.csSQLiteAsync.cs 文件中的所有public 修饰符更改为内部。这将使您更难将软件包更新到较新的版本,因为您必须每次都重复该过程(工作几分钟)。
      • 您可以创建一个单独的 Windows 应用商店应用程序类库,从那里引用 sqlite-net 并从您的 Windows 运行时组件引用这个类库。这样sqlite-net 的类就不会被组件自动公开。

      【讨论】:

      • 请查看我对帖子的编辑。我使用了第二种方法,但仍然出现一些错误。
      • @PrakashR - 错误似乎与您的一门课程有关。看看这个链接,因为它向您展示了如何为 WRC 定义类:msdn.microsoft.com/en-us/library/windows/apps/hh779077.aspx 希望那里有一些东西可以解决您的问题。
      • @PrakashR 如错误消息中所述,您的班级 SQLLite.Models.TaskGroup 有问题。它的公共接口不符合 Windows 运行时组件要求。也许您在该课程中有公共领域?如需进一步帮助,请发布其所有公共成员的列表。
      • @DamirArh : 是的.. 我已将其所有方法设为公开,以便我可以从运行时组件访问它们。
      猜你喜欢
      • 1970-01-01
      • 2015-04-09
      • 2012-08-27
      • 2013-03-10
      • 2013-01-22
      • 2015-12-09
      • 1970-01-01
      • 2015-01-03
      • 2020-02-22
      相关资源
      最近更新 更多