Essayer d'installer EF Core avec une bibliothèque de classes portable ciblant .Net 4.6.1

entity-framework entity-framework-core portable-class-library

Question

C'est la première fois que j'expérimente avec EF Core, ASP Net Core et des bibliothèques de classes portables avec VS2015. Juste de dire que je deviens frustré.

Je veux créer une bibliothèque où je peux installer EntityFramework.Core. Cette bibliothèque doit être utilisée dans une application WPF et une application Web ASP NET Core - sans tenir compte de tout bon concept d'application en couches pour l'instant. Ma pensée était de créer une bibliothèque de classes portable.

Utilisation du modèle de projet où je cible .NET 4.6 et ASP Net Core ...

Les cibles

Je reçois un projet avec une classe et un fichier project.json comme suit:

{
    "supports": {
        "net46.app": {},
        "dnxcore50.app": {}
    },
    "dependencies": {
        "Microsoft.NETCore": "5.0.0",
        "Microsoft.NETCore.Portable.Compatibility": "1.0.0"
    },
    "frameworks": {
        "dotnet": {
            "imports": "portable-net452"
        }
    }
}

Maintenant, quand j'installe le paquet EntityFramework.Core de nuget ...

Installer EF Core Nuget

... je reçois la sortie suivante:

Restoring packages for 'Acme.PCLEFClassLib'.
Restoring packages for K:\TFS\TestApps\Projects\DotNetCore\Acme.PCL1\Acme.PCL1\project.json...
Detected package downgrade: System.Reflection from 4.1.0-beta-23225 to 4.0.10 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 1.0.0-rc1-final) -> System.Reflection (>= 4.1.0-beta-23225) 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Reflection (>= 4.0.10)
Detected package downgrade: System.Reflection from 4.1.0-beta-23225 to 4.0.10 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> Microsoft.Extensions.Logging.Abstractions (>= 1.0.0-rc1-final) -> System.Reflection (>= 4.1.0-beta-23225) 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Reflection (>= 4.0.10)
Version conflict detected for System.Collections. 
 Acme.PCLEFClassLib (>= 1.0.0) -> EntityFramework.Core (>= 7.0.0-rc1-final) -> System.Collections (>= 4.0.11-beta-23516) 
 Acme.PCLEFClassLib (>= 1.0.0) -> Microsoft.NETCore.Portable.Compatibility (>= 1.0.0) -> Microsoft.NETCore.Runtime (>= 1.0.0) -> Microsoft.NETCore.Runtime.CoreCLR-x86 (>= 1.0.0) -> System.Collections (= 4.0.10).
EntityFramework.Core 7.0.0-rc1-final is not compatible with .NETPlatform,Version=v5.0.
Some packages are not compatible with .NETPlatform,Version=v5.0.
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0.
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0.
Some packages are not compatible with DNXCore,Version=v5.0.
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0 (win7-x86).
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0 (win7-x86).
Some packages are not compatible with DNXCore,Version=v5.0 (win7-x86).
Ix-Async 1.2.5 is not compatible with DNXCore,Version=v5.0 (win7-x64).
Remotion.Linq 2.0.1 is not compatible with DNXCore,Version=v5.0 (win7-x64).
Some packages are not compatible with DNXCore,Version=v5.0 (win7-x64).
Package restore failed for 'Acme.PCLEFClassLib'.
Package restore failed. Rolling back package changes for 'Acme.PCLEFClassLib'.
========== Finished ==========

Est-il possible d'installer EF Core dans une bibliothèque de classes portable? Si oui, comment dois-je faire avec le projet?

Je sens juste que je tourne en rond à la recherche de solutions en ligne.

MISE À JOUR 1

J'ai essayé d'installer EntityFramework.MicrosoftSqlServer dans mon PCL.

Étant donné qu'EntityFramework.MicrosoftSqlServer est installé lors de la création d'un projet ASP Net Core standard, qui utilise le framework dnxcore50. Comment se fait-il que si je fais pareil dans le PCL, se plaint que:

EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final is not compatible with .NETPlatform,Version=v5.0.

Si tel est le cas, pourquoi s’installe-t-il dans un projet ASP NET Core?

MISE À JOUR 2

J'ai créé un nouveau PCL ciblant .NET 4.5.1. J'ai ensuite installé EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final dans celui-ci via Nuget, et cela ne pose aucun problème. Bien que je ne puisse pas répéter cela maintenant. Je viens de créer une solution distincte avec un projet de bibliothèque PCL ciblant ASP NET Core et .NET 4.5.1. Cela affiche maintenant ce qui suit:

Attempting to gather dependency information for package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' with respect to project 'AnotherPCLEFFUP', targeting '.NETPortable,Version=v4.5,Profile=Profile75'
Attempting to resolve dependencies for package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' with DependencyBehavior 'Lowest'
Resolving actions to install package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final'
Resolved actions to install package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final'
Install failed. Rolling back...
Package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' does not exist in project 'AnotherPCLEFFUP'
Package 'EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final' does not exist in folder 'K:\TFS\TestApps\Projects\DotNetCore\AnotherPCLEFFUP\packages'
Invalid portable frameworks.

Il en va de même en installant EntityFramework.Core.7.0.0-rc1-final.

Il est juste de dire que c'est totalement frustrant. Peut-être suis-je en train d'aboyer le mauvais arbre ou simplement d'aboyer en colère aujourd'hui.

Réponse populaire

Je ne sais pas comment cela fonctionnera pour vos besoins en classe portable, mais pour .NET classique (4.6 ou etc.), j'ai découvert ce qui suit. (voir le discours ci-dessous)

Donc, je ne sais pas si c'est 'casher' ou pas, mais cette source fonctionne maintenant:

Ajouter une source de package de nuget (Options - Sources de package - Ajouter (plus)

Si vous installez pour SqlServer, installez simplement ceci:

Microsoft.EntityFrameworkCore.SqlServer

Ou choisissez une autre dépendance de haut niveau qui prendra en charge tous les autres besoins.

* [begin-rant] C'était seulement en discutant des discussions sur le github EF. Il est totalement inexcusable qu'ils n'aient pas de description pratique expliquant quoi faire maintenant. Ils devraient tirer la version "RC" 1, avec tous ses bugs et son design radicalement différent de celui sur lequel ils travaillent actuellement, et qui n’a pas été mise à jour depuis plus de 5 mois (! Et c’est avec le 'pre - relâchez la marque cochée!), entièrement en pépite.

Permettez-moi d'ajouter: j'aime tout ce que font ces gars-là, j'aime les nouveaux morceaux, beaucoup de choses vraiment bonnes. Mais nous ne devrions pas rester en suspens pendant six mois avec une version supposée et toujours marquée "RC" alors qu'elle est pleine de bugs qui ont déjà été corrigés dans la version radicalement modifiée de rc2, qu'ils n'ont pas annoncée. [/ end-rant] *



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow