13

Ist EntityFramework für Windows 8 Store Apps verfügbar?Ist EntityFramework für Windows 8 Store Apps verfügbar?

Ich verwende Visual Studio 2012 Express für Windows 8. Ich beginne mich zu wundern, weil ich es nicht funktionieren lassen kann.

ich das Entity Framework-Paket von NuGet installiert I System.Data.Entity und System.Data.Design das Projekt

Aber egal was ich tue, ist DbContext nicht erkannt ...

hinzugefügt

Irgendwelche Ideen?

EDIT:

EntityFramework ist für Windows Store Apps nicht zur Verfügung. Ich verstehe Microsoft Position zu diesem Thema nicht, sie sind scheiße.

Die andere Lösung ist die Verwendung von SQLite, aber es ist nicht ORM. Also, was ist der Punkt?

+0

EntityFramework ist nicht für Windows 8 Store-Apps verfügbar. Sie können SQLite verwenden: http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-store-apps.aspx –

+0

SQLite ist nicht ORM, ist es? –

+0

@AntoineGamond nein ist es nicht, aber ich denke, es gibt einige OS-Projekte, die dabei helfen können. –

Antwort

8

Soweit ich weiß, zielen Windows 8 Store Apps auf WinRT (Windows Runtime).

Aus diesem Grund, da WinRT mit C# targetiert werden kann und viele Klassen von .NET Framework eine Übereinstimmung in WinRT haben, funktionieren die meisten verfügbaren Codebasen nicht mit sehr spezifischen Bibliotheken auch in Windows 8 Store Apps.

In WinRT sind viele Dinge nicht verfügbar. Beispielsweise wird Entity Framework auf ADO.NET erstellt, und dies ist auf WinRT nicht verfügbar.

Visual Studio ist Smart genug, um solche Klassen und Komponenten zu verbergen, die nicht auf WinRT verfügbar sind und deshalb Entity Framework-bezogene Klassen in Ihrem Windows 8 Store App-Projekt nicht verwendet werden können.

Um Entity Framework zu verwenden, müssen Sie eine RESTful-Web-API (z. B. mit der ASP.NET-Web-API) erstellen und über die Verbindung asynchron auf die Datenschicht zugreifen.

Andernfalls müssen Sie einen lokalen Datenbankspeicher wie SQLite oder XML verwenden.

+2

Mit anderen Worten, Microsoft saugt. Die App muss im Offline-Modus arbeiten. Ich denke, das ist bei den meisten Apps der Fall. Und SQLite ist nicht ORM ... –

+1

@AntonieGamond In meiner bescheidenen Meinung hat Microsoft Windows 8 App-Entwicklung heruntergestuft, als ob es mobile Entwicklung war. Ich meine, dass ein Tablet oder Laptop oder sogar ein Desktop-PC nicht die Einschränkungen der mobilen Entwicklung haben. Oder Sie können argumentieren, dass Microsoft möchte, dass jedes Gerät mit dem Internet verbunden ist und alle dazu zwingt, die Cloud zu verwenden (z. B. Azure). Ist das ein guter Grund, nicht wahr? ;) –

+0

@AntoineGamond Da bin ich mir nicht sicher, aber du kannst es mit * Dapper * versuchen, dem Mini-OR/M hinter StackExchange. Vielleicht passt es zu Ihren Bedürfnissen (oder wer weiß). –

2

Entity Framework ist nicht für Windows 8 Store-Apps verfügbar. Dies liegt daran, dass Windows-Apps in einer Sandbox ausgeführt werden und keine normale Datenbank verwenden können. Sie können hierfür SQLite verwenden oder XML/JSon als Quelle verwenden, die Sie beim ersten Start der App in IsolatedStorage der App bereitstellen können.

+1

_run in sandbox_ scheint keine vollständige Erklärung zu sein ... Welcher Teil von EF wäre unsicher? –

+1

Auf iOS sind Apps auch Sandboxed, aber das bedeutet nicht, dass wir keine Datenbank in der Sandbox haben können. Ich verstehe nicht, was ist der offizielle Ansatz von Microsoft dafür? Sie bauen ein großartiges Framework, aber es ist nicht kompatibel mit Windows 8-Anwendungen? –

+1

Vielleicht ein gutes Argument ist, dass der größte Teil einer Windows Store App auf Windows RT statt regulärer Win32/.NET funktioniert, was bedeutet, dass eine Menge Code-Basis nicht auf Windows 8 Moderne UI-Anwendungen funktionieren wird. –

2

Nein, es ist nicht verfügbar. Sie können SQLite verwenden, diese HowTo war sehr hilfreich für mich. Funktioniert super!

+1

SQLite ist kein ORM. Wir sind im Jahr 2013 ... Kennen Sie LinqConnect? http://www.devart.com/linqconnect/ –

+0

Nein, ich wusste es nicht. Danke für das Teilen – Joel

1

Für das Protokoll: Die Antwort ist nicht und die Umkehrung ist, einen Web-Service zu erstellen oder einen Cloud-Service zu verwenden. SqlLite eignet sich für lokale Informationen (Einzelbenutzer), aber nicht mehr.

Nicht alle, aber die meisten Verbindungen zur Datenbank sind über eine Socket-Verbindung. Es ist also möglich, eine Verbindung zu einer Datenbank herzustellen und die Anwendung trotzdem in einer Sandbox zu behalten. Die Absichten von MS sind jedoch klar: Cloud oder Bust. MS sagt also, dass es am besten ist, eine Verbindung zu einem Web-Service herzustellen (eine andere eine Socket-Verbindung), die ineffizient (und riskant) ist, eher eine direkte Verbindung zu verwenden.

Windows Store Apps ist einfach minderwertig.

Und um die Beleidigung über die Verletzung hinzuzufügen, will MS etwas von unserer Software sparen.

Ich habe wirklich versucht, WinRT (jetzt UWP) zu mögen, aber es ist unmöglich. Und während dieser 3 Jahre werden die Dinge nicht ein bisschen verändert.

Verwandte Themen