2017-08-08 49 views
0

我是一個新的Xamarin開發人員,我現在正在研究需要數據庫來存儲應用程序數據的簡單應用程序。如何與Xamarin.Forms一起使用MongoDB PCL(共享項目)

我的需求: 簡單的應用程序,MVVM設計模式,一個發展。 應用程序需要在iOS和Android合作

我的解決方案結構:

  1. Xamarin.Forms PCL項目(​​包含瀏覽,的ViewModels,模型,服務)

  2. Xamarin.Droid - 默認的Xamarin Android項目。

  3. Xamarin.IOS - 默認的Xamarin IOS項目。

我想使用NoSQL數據庫。 我知道MongoDB,這是一個不錯的。 但在Google中搜索後,沒有任何教程可將MongoDB與Xamarin.Forms PCL項目結合使用。

所以,我的問題:

  1. 它可以使用MongoDB的具有Xamarin.forms? (如果(1)的答案是「是」) - 真的推薦MongoDB與Xamarin.Forms PCL項目一起使用嗎?

  2. (如果(2)的答案是「否」) - 在我的情況下,最好的NoSQL數據庫選項是什麼?

注意: 我已經嘗試使用這篇文章: http://www.c-sharpcorner.com/UploadFile/093731/xamarin-with-mongodb/

但不工作。

我正在使用:Visual Studio 2017,Xamarin.Forms(2.3.4.247)。

感謝了很多!

+0

你是什麼意思與「不工作」 ?如果您已經嘗試了一些代碼,最好分享錯誤消息並對其進行處理。 –

+0

好的路易斯,在上面的文章中,添加MongoHelper類後,我得到了這個錯誤: https://image.ibb.co/j6514v/Untitled.jpg 而我沒有找到任何解決此問題。 感謝您的幫助。 ****當然,我添加了參考:https://image.ibb.co/jvzHcF/Untitled2.jpg –

+0

我想你忘了在類的頂部添加「using」關鍵字的命名空間。 –

回答

3

Xamarin窗體PCL無關,同MongoDB.You做需要的服務來訪問MongoDB的或任何其他分貝.Ideally你可以使用RESTful服務來訪問數據庫

你剛纔提到的文章解釋瞭如何通過Web API訪問MongoDB(這是一個RESTful Web服務)。唯一需要擔心的是Xamarin,如何在pcl中調用web api。再次根據您的文章,他們使用HttpWebRequest來訪問Web api(您可以使用不同的客戶端,例如httpclient,restsharp等來執行此操作)。

順便說一下,您需要使用nuget(https://www.nuget.org/packages/MongoDB.Driver/)將Mongodb驅動程序添加到您的web api項目中。

似乎你沒有正確安裝驅動程序到web api項目。另外我不知道MongoCollection是一個自定義模型類,它們是爲了保持數據庫實例而創建的。

3

如果您正在尋找NoSQL 離線與Xamarin PCL一起使用的數據庫,您可以通過使用LINQ的模型和查詢來訪問該數據庫。

Realm可能是你找什麼:

public class Dog : RealmObject { 
    public string name {get;set;} 
    public Human Owner {get;set} 
} 

public class Human : RealmObject { 
    public IList<Dog> dogs {get;} 
    public string FirstName {get;set;} 
} 

Realm realm = Realm.GetInstance(); 
Human man = new Human(); 
man.Firstname = "Matan"; 

Dog dog = new Dog(); 
dog.name = "Jimmy"; 
man.dogs.Add(dog); 

using (var trans = realm.BeginWrite()){ 
    realm.Add(man): 
    trans.Commit(); 
} 

var people = realm.All<Human>(); 

foreach(var person : people){ 
    Debug.WriteLine(person.FirstName); 
    Debug.WriteLine(person.dogs[0].name); 
} 

// [Output] 
// Matan 
// 

要使用MongoDB的直接,你需要創建您發佈數據的API與REST

相關問題