2016-01-15 26 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次的字段的查詢,我必須創建映射,或者有任何自動的方法做它? 我開始的項目將有許多查詢與自定義映射。 –

相關問題