如何与Xamarin.Forms一起使用MongoDB PCL(共享项目)

问题描述:

我是一个新的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”关键字的命名空间。 –

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是一个自定义模型类,它们是为了保持数据库实例而创建的。

如果您正在寻找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