Как использовать MongoDB с Xamarin.Forms PCL (общий проект)

117
10

Я новый разработчик Xamarin, и теперь я работаю над простым приложением, которому нужна база данных для хранения данных приложения.

Мои потребности: Простое приложение, шаблон проектирования MVVM, Одна разработка. Приложение должно работать в IOS и Android

Моя структура решения:

Проект Xamarin.Forms PCL (содержит виды, ViewModels, модели, службы)

Xamarin.Droid - стандартный проект Xamarin для Android.

Xamarin.IOS - проект Xamarin IOS по умолчанию.

Я хочу использовать базу данных NoSQL. Я знаю о MongoDB, это хороший. НО после поиска в Google нет никакого учебника по использованию MongoDB с проектом Xamarin.Forms PCL.

Итак, мои вопросы:

Можно использовать MongoDB с Xamarin.forms?

(Если ответ для (1) "Да") - MongoDB действительно рекомендуется использовать с проектом Xamarin.Forms PCL?

(Если ответ для (2) - "Нет") - какая лучшая опция базы данных NoSQL в моем случае?

Внимание: я уже пытался использовать эту статью: http://www.c-sharpcorner.com/UploadFile/093731/xamarin-with-mongodb/

Но не работает.

Я использую: Visual Studio 2017, Xamarin.Forms(2.3.4.247).

Большое спасибо!

спросил(а) 2021-01-25T14:48:37+03:00 4 месяца, 3 недели назад
1
Решение
89

Если вы ищете автономную базу данных NoSQL, которая работает с PCM Xamarin, доступ к которым вы можете получить с помощью моделей и запросов с помощью LINQ.

Царство может быть тем, что вы ищете:

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

ответил(а) 2021-01-25T14:48:37+03:00 4 месяца, 3 недели назад
89

Xamarin Forms PCL не имеет ничего общего с MongoDB. Вам нужна служба для доступа к MongoDB или любому другому db. Действительно, вы можете использовать службу RESTful для доступа к базе данных

В статье, которую вы упомянули, объясняется, как получить доступ к MongoDB через веб-интерфейс (это веб-служба RESTful). Единственное, что вам нужно беспокоиться о Xamarin, - это как вызвать веб-api в pcl. Снова на основе вашей статьи они используют HttpWebRequest для доступа к веб-api (для этого вы можете использовать разные клиенты, такие как httpclient, restsharp и т.д.).

Кстати, вам нужно добавить драйвер Mongodb с помощью nuget (https://www.nuget.org/packages/MongoDB.Driver/) в ваш веб-проект api.

Кажется, вы не правильно установили драйвер в веб-проект api. Также я удивляюсь, что MongoCollection - это собственный класс модели, который они создали для хранения экземпляров db.

ответил(а) 2021-01-25T14:48:37+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема