Подтвердить что ты не робот

Локальное хранение структурированных данных в приложениях в стиле Metro Win8

В настольном приложении .NET стандартным вариантом реализации локальной реляционной базы данных является использование SQL Server Compact Edition, а затем, конечно, есть возможность использовать SQLite и другие сторонние модули.

Какие параметры доступны для приложения .NET Metro? SQL CE кажется недоступным - любая замена? На самом деле все пространство имен System.Data, кажется, исчезло - так что LINQ to SQL или Entity Framework, либо?

Как насчет HTML5 IndexedDB, который, по-видимому, доступен для приложений Metro HTML/JS, может быть как-то использоваться из .NET?

4b9b3361

Ответ 1

По-видимому, Extensible Storage Engine API Win32 (так называемый JET Blue) по-прежнему доступен в приложениях Metro. С++ могут использовать его непосредственно через #include <esent.h>. Приложения .NET должны использовать P/Invoke. Это не дает SQL или каких-либо других типов конструкторов реляционных запросов высокого уровня, но обеспечивает ключевой поиск, транзакции, несколько индексов для таблицы и многополевые индексы.

Ответ 2

Позвольте быть ясным: SQL CE существует в Windows 8. Он существует не только в Program Files, но и в Windows\System32, чтобы казаться даже более встроенным, чем раньше. Windows7 не имеет sqlcecompact40.dll в system32, поэтому это определенно новое. System.Data и System.Data.Linq живут в C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.

Вы можете добавить ссылки на эти dll вручную, но получение приложения для компиляции будет удалено или пропущено. Похоже, что если вы сначала откроете свой проект и ничего не сделаете, вы можете добавить ссылку на эти DLL в любом месте и скомпилировать приложение. Если вы удалите DLL и попробуйте добавить их обратно, вы попали в ссылку "Ссылка на" < 4.5 framework directory > ". Невозможно добавить. Если вы случайно не сможете добавить их через Visual Studio, вы можете легко просто добавьте HintPath вручную.

Мое приложение теперь компилируется, но я также столкнулся с проблемой, когда ссылка на AppX работала некорректно, и она давала критические сообщения типа "Полезная нагрузка не может содержать 2 одинаковых типа". Как и в последнюю минуту, он пытался включить 32-разрядные (один из которых был связан) и 64 бит. Это были библиотеки DLL, которые я не касался вручную, как System.Data.OracleClient или System.Transactions, поэтому это был определенно некоторый артефакт из процесса сборки, который я еще не видел снова.

Основная проблема, с которой я сейчас имею в виду, - создать правильную строку соединения, так как она не будет инициализироваться правильно без нее. SQL CE, вероятно, все еще ищет жестко закодированные ссылки C: \, поэтому образцы ApplicationData могут работать не так, как требуется. Я могу попытаться создать базы данных SQL CE 4 в Win7, перейти на Win8 и просто ссылаться на них локально, но я тоже в одной и той же лодке. Это | | закрыть!

Пожалуйста, не стесняйтесь комментировать какие-либо проблемы, с которыми вы сталкиваетесь, и я определенно готов к сотрудничеству в автономном режиме, если кто-то хочет объединить ресурсы. Это, безусловно, густой лес зверей, и один из них доказывает гораздо более сложную задачу.