J'ai le même problème. J'ai ajouté les dépendances suivantes dans mon fichier project.json
:
"dependencies": {
"EntityFramework": "7.0.0-beta4",
"EntityFramework.Core": "7.0.0-rc1-final",
"EntityFramework.SqlServer": "7.0.0-beta8",
"EntityFramework.Commands": "7.0.0-rc1-final"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
...
J'ai utilisé dnu install EntityFramework
et dnu install EntityFramework.SqlServer
pour installer les packages. "EntityFramework": "7.0.0-beta4",
été écrit automatiquement sous le nœud des dependencies
par le programme d'installation lui-même.
Question / Question 1: À ma grande surprise lorsque j’ai EntityFramework
l’intellisence d’ EntityFramework
la version disponible que je présente n’est que 6.1.3
!
Problème 2: lorsque je compile mon application à l'aide de dnu build
(j'ai exécuté dnu restore
commande dnu restore
après avoir ajouté EntityFramework
assemblys .Core
( .Core
et .Commands
) sous le nœud des dependencies
, de nombreuses erreurs de compilation se produisaient:
The type 'DbContextOptionsBuilder' is defined in an assembly that is not referenced. You must add a reference to assembly 'EntityFramework.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=null'.
D:\Projects\aspnet\apiservice\Models\SampleData.cs(12,41): DNXCore,Version=v5.0 error CS0308: The non-generic method 'IServiceProvider.GetService(Type)' cannot be used with type arguments
D:\Projects\aspnet\apiservice\Models\SampleData.cs(13,32): DNXCore,Version=v5.0 error CS0308: The non-generic method 'IServiceProvider.GetService(Type)' cannot be used with type arguments
D:\Projects\aspnet\apiservice\Models\SampleData.cs(14,29): DNXCore,Version=v5.0 error CS1061: 'object' does not contain a definition for 'Books' and no extension method 'Books' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
D:\Projects\aspnet\apiservice\Models\SampleData.cs(15,42): DNXCore,Version=v5.0 error CS1061: 'object' does not contain a definition for 'Authors' and no extension method 'Authors' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
D:\Projects\aspnet\apiservice\Models\SampleData.cs(17,43): DNXCore,Version=v5.0 error CS1061: 'object' does not contain a definition for 'Authors' and no extension method 'Authors' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
D:\Projects\aspnet\apiservice\Models\SampleData.cs(19,45): DNXCore,Version=v5.0 error CS1061: 'object' does not contain a definition for 'Authors' and no extension method 'Authors' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
D:\Projects\aspnet\apiservice\Models\SampleData.cs(22,29): DNXCore,Version=v5.0 error CS1061: 'object' does not contain a definition for 'Books' and no extension method 'Books' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
D:\Projects\aspnet\apiservice\Models\SampleData.cs(61,29): DNXCore,Version=v5.0 error CS1061: 'object' does not contain a definition for 'SaveChanges' and no extension method 'SaveChanges' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
Si je supprime .Core
et .Commands
assembly fait référence à la construction du projet.
Ensuite, j'ai changé la version d' EntityFramework.Core
en 7.0.0.0
comme indiqué dans l'erreur:
The type 'DbContextOptionsBuilder' is defined in an assembly that is not referenced. You must add a reference to assembly 'EntityFramework.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=null'.
Mais dnu restore
maintenant m'a donné ce qui suit:
Unable to locate Dependency EntityFramework.Core >= 7.0.0
Writing lock file D:\Projects\aspnet\apiservice\project.lock.json
Restore complete, 6675ms elapsed
Errors in D:\Projects\aspnet\apiservice\project.json
Unable to locate Dependency EntityFramework.Core >= 7.0.0
Je suis un débutant sur la plateforme de Visual Studio code
asp.net 5
Visual Studio code
. Et je ne peux pas utiliser Visual Studio 2015
car d'autres membres de l'équipe de développement utilisent OSX.
C'est un projet d'apprentissage pour moi. L'exigence est assez simple. Connectez une base de données SQL Server, extrayez des données relationnelles master-child
l'aide d'Entity Framework.
Foutu! Aidez-moi!!
Merci d'avance
METTRE À JOUR
Je peux voir les modifications majeures apportées à project.json
pour tous les packages de la version 7.0.0-rc1-final
. J'ai utilisé l'outil générateur Yeoman pour créer le projet, mais il semble que vous ayez corrigé le package via Visual Studio
. Alors, dois-je mettre à jour la version du paquet manuellement et les restore
?
Lorsque le projet a été créé / généré par Yeoman, aucun fichier global.json
n'a été ajouté par défaut. Puis-je ajouter ceci manuellement et insérer le code à la main? Est-ce que ça va marcher?
Je peux également voir que des références de paquetages supplémentaires sont ajoutées au fichier project.json
qui n'ont pas été ajoutées par défaut par le générateur Yeoman - comme Microsoft.AspNet.Tooling.Razor
, Microsoft.Extensions.Logging.Console
, Microsoft.Extensions.Logging.Debug
, Microsoft.Extensions.Logging
etc. Sont-ils tous utilisés efficacement dans le projet? Comme le générateur ne les a pas ajoutés automatiquement, puis-je les ajouter manuellement et les restaurer à l'aide de dnu restore
? Cela aura-t-il un impact sur le projet si je les ajoute manuellement?
Vous devez supprimer "EntityFramework"
des dépendances (supprimer la ligne "EntityFramework": "7.0.0-beta4"
) et utiliser
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final"
seulement. Vous n'avez pas besoin d'ajouter "EntityFramework.Core": "7.0.0-rc1-final"
explicitement si vous avez ajouté "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
cause des dépendances suivantes:
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final":
"EntityFramework.Relational": "7.0.0-rc1-final":
"EntityFramework.Core": "7.0.0-rc1-final"
Je veux dire que EntityFramework.MicrosoftSqlServer
nécessite EntityFramework.Relational
, ce qui nécessite EntityFramework.Core
.
Vous devez également vérifier que global.json
contient "sdk": { "version": "1.0.0-rc1-update1" }
.
MISE À JOUR : J'ai examiné le projet de test que vous avez téléchargé. Il y avait beaucoup de petits problèmes. Je l'ai modifié. Vous pouvez télécharger le projet modifié ici . N'oubliez pas de réparer le ConnectionString
utilisé dans appsettings.json
, il contient le Server
que j'ai utilisé chez moi.
Les modifications les plus importantes concernent l'utilisation de BookContext.cs
plus simple:
using Microsoft.Data.Entity;
namespace apiservice.Models {
public class BookContext : DbContext {
public DbSet<Author> Authors { get; set; }
public DbSet<Book> Books { get; set; }
}
}
l'utilisation du SampleData.cs
suivant
using System;
using System.Linq;
using Microsoft.Data.Entity;
using Microsoft.Extensions.DependencyInjection;
namespace apiservice.Models
{
public static class SampleData
{
public static void Initialize(IServiceProvider serviceProvider) {
var context=serviceProvider.GetService<BookContext>();
context.Database.Migrate();
if (!context.Books.Any()) {
var austen = context.Authors.Add(
new Author { LastName = "Austen", FirstName = "Jane" }).Entity;
var dickens = context.Authors.Add(
new Author { LastName = "Dickens", FirstName = "Charles" }).Entity;
var cervantes = context.Authors.Add(
new Author { LastName = "Cervantes", FirstName = "Miguel" }).Entity;
context.Books.AddRange(
new Book {
Title = "Pride and Prejudice",
Year = 1813,
Author = austen,
Price = 9.99M,
Genre = "Comedy of manners"
},
new Book {
Title = "Northanger Abbey",
Year = 1817,
Author = austen,
Price = 12.95M,
Genre = "Gothic parody"
},
new Book {
Title = "David Copperfield",
Year = 1850,
Author = dickens,
Price = 15,
Genre = "Bildungsroman"
},
new Book {
Title = "Don Quixote",
Year = 1617,
Author = cervantes,
Price = 8.95M,
Genre = "Picaresque"
}
);
context.SaveChanges();
}
}
}
}
l'utilisation de project.json
avec la partie dependencies
suivante:
{
"dependencies": {
"Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.Extensions.DependencyInjection": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final",
"System.Net.Http": "4.0.1-beta-23516",
"Microsoft.Net.Http": "2.2.29",
"Newtonsoft.Json": "8.0.1"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
}
fixation de appsettings.json
partir de
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Verbose",
"System": "Information",
"Microsoft": "Information"
},
"Data": {
"DefaultConnection":{
"ConnectionString": "Server=localhost;Database=BookStore;User Id=sa; Password=******;Trusted_Connection=true;"
}
}
}
}
à
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Verbose",
"System": "Information",
"Microsoft": "Information"
}
},
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=localhost;Database=BookStore;User Id=sa; Password=******;Trusted_Connection=true;"
}
}
}
( Data
ne doivent pas être en cours d' Logging
)
et l'utilisation des Startup.cs
suivants
using apiservice.Models;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Data.Entity;
namespace apiservice
{
public class Startup
{
public static IConfigurationRoot Configuration {get; set;}
public Startup(IHostingEnvironment env)
{
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<BookContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])
);
services.AddMvc();
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
// we need to execute the following two commands before
// dnu restore
// dnx ef migrations add Initial
// dnx ef database update
// For more details on creating database during deployment see http://go.microsoft.com/fwlink/?LinkID=615859
try
{
using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()
.CreateScope())
{
serviceScope.ServiceProvider.GetService<BookContext>()
.Database.Migrate();
}
}
catch { }
app.UseIISPlatformHandler();
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
SampleData.Initialize(app.ApplicationServices);
}
// Entry point for the application.
public static void Main(string[] args) => WebApplication.Run<Startup>(args);
}
}
J'ai écrit dans le commentaire à l'intérieur de la méthode Configure
qu'il faut exécuter les commandes
dnx ef migrations add Initial
dnx ef database update
après que tous les paquets sont restaurés. dnx ef migrations add Initial
créera un dossier Migrations
supplémentaire dans le projet avec des fichiers tels que 20160101205609_Initial.cs
et BookContextModelSnapshot.cs
. La base de données définie dans appsettings.json
sera créée par la dnx ef database update
et sera remplie avec les données de test de SampleData.cs
lors de la SampleData.cs
du programme.
En passant, j'ai déplacé package.json
dans le dossier du package (au même niveau que project.json
). Vous n'utilisez pas les packages, mais le mouvement rend les packages npm visibles et leur gestion dans Visual Studio.