2016-01-15 27 views
0

早上好, 我的应用程序正在使用Xamarin.Forms Portable在Visual Studio 2015 Enterprise中构建。Xamarin.Forms便携式不能访问ADO打开命令

应用程序的目标设备是:Windows Universal(10),Ipad,Android。我发现我必须声明所有的查询映射,所以我正在考虑改用ADO(Mono)。 data.sqlite)。

我已经从Xamarin复制了示例代码,并尝试通过nuget安装Mono.Data.SQL,但我没有访问.Open()属性,并且无法创建数据库或连接到现有一。

然后我试着用Vs2015 + Xamarin.Forms PLC创建一个新的测试项目,并直接在引用中添加Mono.data.sqlite和System.Data,这样我就可以访问.CreateFile。开放,但我收到此错误:

“参考键入它在‘系统’定义‘组件’的主张,但它无法找到

Image of the error 现在我还在寻找在互联网,但没有找到为什么会发生这种情况的好答案。

非常感谢提前

回答

1

首先,Xamarin Forms UWP在Preview中,并且在编译为native时发布时遇到问题。它将全部被固定并最终投入生产(希望今年),但只是提高。

第二,我建议使用SQLite PCL。 https://www.nuget.org/packages/SQLite.Net.Async-PCL/

Xamarin有它的一篇文章:https://developer.xamarin.com/guides/xamarin-forms/working-with/databases/

是的,你没有得到像实体框架一个强大的ORM(你实际上做你UWP(EF7 +仅在RC1现在),但不Xamarin。 iOS或Xamarin.Android)。但它仍然是首选的方式。你也可以使用SQLite的扩展,以帮助https://bitbucket.org/twincoders/sqlite-net-extensions

你可以Google的上述情况,有很多资源上的一切提及(SANS EF7)

更新

是的,你可以得到它自动映射回一个对象,SQLite PCL.NET为你做这件事,你可以用泛型调用这些方法。

// Set a variable to your SQLiteAsyncConnection 
    database = sqlLite.GetAsyncConnection(); 

    // Call a query and have it map back to the object type 
    public async Task<List<T>> QueryAsync<T>(string queryText, params Object[] args) where T : class, new() 
    { 
     return await database.QueryAsync<T>(queryText, args); 
    } 

    // Or here is another helper function 
    public async Task<List<T>> GetAllAsync<T>() where T : class, new() 
    { 
     return await database.Table<T>().ToListAsync();   
    } 

例如,

public class MyTable 
    { 
     public string ColumnName { get; set; } 
    } 


    await GetAllAsync<MyTable>(); 
+0

感谢您的快速回复。 使用Sqlie PCL,我们可以在不使用像ADO那样的映射表的情况下执行普通查询? 我想使用DataReader而不是ORM版本eheheheh。 –

+0

不幸的是,我不知道像ADO这样的DataReader for PCL。使用SQLite,您可以使用SQL字符串查询执行查询。 –

+0

是的,你可以使用SQL字符串查询来执行查询,但是你必须定义映射,如果我创建了一个包含20个将要被使用1次的字段的查询,我必须创建映射,或者有任何自动的方法做它? 我开始的项目将有许多查询与自定义映射。 –

相关问题