Windows运行时组件中的sqlite

时间:2013-03-26 06:53:31

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

我正在尝试在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

但我不能这样,因为它会给我访问权限问题,因为它是私有的。

任何soln?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

Windows运行时组件有many limitations关于它在外部公开的类型。

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

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

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