我正在尝试在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?
答案 0 :(得分:2)
我不明白这些错误是什么,但您是否首先通过工具&gt;安装SQLite for Windows Runtime?扩展? sqlite-net是LINQ查询库
答案 1 :(得分:0)
Windows运行时组件有many limitations关于它在外部公开的类型。
当您包含sqlite-net
时,其所有类型都被声明为公共类型,并且将被组件有效地公开。这是你所看到的错误的共鸣。
您可以执行以下两项操作之一来解决问题:
public
和SQLite.cs
文件中的所有SQLiteAsync.cs
修饰符更改为内部。这将使您更难以将软件包更新到更新的版本,因为您每次都必须重复该过程(几分钟的工作)。sqlite-net
并从Windows运行时组件引用此类库。这样,sqlite-net
的类将不会被组件自动公开。