Существуют ли какие-либо ORM, поддерживающие SQLite для универсальных приложений?

Это вопрос. Я читал, что EF7 будет поддерживать SQLite для Магазина Windows и Windows Phone, но что делать прямо сейчас? Существуют ли другие ORM, поддерживающие SQLite в универсальных приложениях?


person Pantelis    schedule 22.07.2014    source источник


Ответы (1)


Существует CoolStorage, но у меня нет опыта работы с этим ORM.

Не ORM как таковой, но проверьте SQLite.Net вместе с Расширения SQLite.Net. Я использую его прямо сейчас в универсальном приложении, и оно работает достаточно хорошо для того, что мне нужно.

Обратите внимание, что ещё нет поддержка отношений в LINQ.

Я сам в настоящее время использую такие расширения:

public class Bar
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    public string Title { get; set; }

    [ManyToMany(typeof(FooBar))]
    public List<Foo> Foos{ get; set; }
}

public class Foo
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    public string Title { get; set; }

    [ManyToMany(typeof(FooBar))]
    public List<Bar> Bars{ get; set; }
}

public class FooBar
{
    [ForeignKey(typeof(Foo))]
    public int FooId{ get; set; }

    [ForeignKey(typeof(Bar))]
    public int BarId{ get; set; }
}
person Benjamin Diele    schedule 22.07.2014
comment
Это очень разочаровывает, это то, к чему я стремился, избегайте написания sql-запросов. Кажется, что это невозможно, ну пока. - person Pantelis; 22.07.2014
comment
@Pantelis смотрите мою правку о CoolStorage. Возможно, вы могли бы попробовать это. - person Benjamin Diele; 22.07.2014
comment
Я видел его раньше, но никогда не использовал его. Однако я не вижу нигде упоминания о приложениях Магазина Windows. На самом деле это очень старое приложение для Windows Phone 7. - person Pantelis; 22.07.2014
comment
@Benjamin Diele Я не могу использовать расширения sqlite.net в универсальном приложении, так как оно не устанавливается в моем проекте Windows Phone. Вы можете поделиться своим решением? - person Muhammad Saifullah; 22.07.2014
comment
@MuhammadSaifullah Я клонировал репозиторий SQLite.Net и добавил обычную (PCL) версию. После этого я клонировал расширения SQLite.Net и добавил их. Я не думаю, что клонирование репозиториев требуется, но мне показалось, что это проще, так что я могу запустить исходный код, когда что-то пойдет не так. Если вам нужен пример приложения, дайте мне знать. - person Benjamin Diele; 22.07.2014
comment
Я разместил отдельный вопрос для этого. Вы можете объяснить свое решение там? вот ссылка stackoverflow.com/questions/24859799/ - person Muhammad Saifullah; 22.07.2014
comment
@MuhammadSaifullah Проверьте свой вопрос :) - person Benjamin Diele; 22.07.2014
comment
Итак, SQLite.Net Extensions необходимо включить в оба проекта. Это означает, что ваша Модель также должна быть в обоих проектах? Или у вас есть отдельный проект для модели и доступа к данным, который ссылается на необходимые библиотеки (SQLite for Windows Runtime (Windows 8.1), Microsoft Visual C++ 2013 Runtime Package for Windows и эквиваленты Windows Phone)? - person Pantelis; 24.07.2014
comment
Моя модель находится в общем проекте. Вам нужно включить расширения для каждого проекта, потому что именно здесь код отличается (запись на устройство и т. д.). Ваша модель использует библиотеку, которая все сделает за вас :) - person Benjamin Diele; 24.07.2014
comment
Значит, вы не используете какие-либо атрибуты расширения для своей модели, не так ли? Ваша база данных проста, без связей? Я в основном обеспокоен тем, что у меня сложная схема базы данных. - person Pantelis; 24.07.2014
comment
@Pantelis Я обновил свой ответ. Я использую атрибуты и отношения, хотя моя фактическая схема не очень сложна (пара отношений N-M, M-M) - person Benjamin Diele; 24.07.2014
comment
Я все еще пытаюсь установить расширение, но, кажется, я его нашел. Я до сих пор не понимаю, как ваша модель, а под моделью я подразумеваю ваши сущности, те, что в вашем отредактированном ответе, знают о расширениях, поскольку расширения упоминаются только в вашем проекте WP8.1, а ваши сущности лежат в общем. - person Pantelis; 25.07.2014
comment
Боже, я либо слишком тупой, либо это слишком сложно. Или, может быть, вы неправильно это объясняете, я имею в виду, что существует множество проектов SQLite и несколько способов ссылаться на них. Не могли бы вы упаковать универсальное решение, готовое к расширениям sqlite, и я возьму его оттуда. - person Pantelis; 25.07.2014
comment
Привет, @BenjaminDiele, у меня похожие проблемы... Не могли бы вы поделиться с нами примером проекта? - person fabianpimminger; 25.09.2014
comment
Я думаю, что теперь это официально поддерживается: blogs.windows.com/buildingapps/2016/05/03/. Я собираюсь попробовать это сейчас. - person Hendra Anggrian; 10.08.2016