0

我试图在 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://racher.azurewebsites.net/Post/PostContent/23解决它

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

任何解决方案?

4

2 回答 2

2

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

于 2013-03-26T07:06:36.980 回答
0

Windows 运行时组件对其对外公开的类型有许多限制。

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

您可以执行以下两项操作之一来解决问题:

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