freiberuflicher Software Entwickler C#, vb.Net, vba, UWP, WPF, WinForms, SQL Server, Access, Excel, ASP.Net Core MVC Telefon: 07022/9319004   Kontakt
#

 

Die Fehlermeldung entsteht, wenn man bei Asp.net Core 2 MVC eine Anwendung mit EF Entity Framework erweitern möchte.

Sobald man die Migration startet, kommt der Feher:

No DbContext was found in assembly

 

Fehler Meldung in der Package Manager Console

PM> add-migration 01Start

Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]

      User profile is available. Using 'C:\Users\Raimund\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.

No DbContext was found in assembly 'ArtikelWeb'. Ensure that you're using the correct assembly and that the type is neither abstract nor generic.

 

 

Lösung:

Man muss eine DbContext Klasse unter Models erstellen, welche die Tabellen zur äußeren SQL Server Datenbank darstellt.

In Entity Framework wird die Datenbank als DbContext bezeichnet und DbSet sind die Tabellen.

Dabei muss der Text myWebApp_ an den Namen der eigenen Anwendung angepasst werden

    public class DbContext_Model

    {

 

        public class MyWebApp_Context : DbContext

        {

            public myWebApp_Context(DbContextOptions< myWebApp_Context> options)

                : base(options)

            { }

 

            public DbSet<Products > Products { get; set; }           

        }

    }

 

Hierzu muss man die Zeile EntityFrameworkCore bei Asp.Net Core einfügen

using Microsoft.EntityFrameworkCore;

 

Im Verzeichnis /Models

 

 

Dann fügt man die Datenbank-Verbindung der Startup.cs Datei hinzu

 

 

Eintrag der Connection in den Abschnitt ConfigureServices.

Die Bezeichnung myWebApp muss dabei auf den Namen der eigenen Anwendung angepasst werden

public void ConfigureServices(IServiceCollection services)

        {

            services.AddMvc();

            var connection = @"Server=(localdb)\mssqllocaldb;Database=myWebApp;Trusted_Connection=True;";

            services.AddDbContext<myWebApp_Context>(options => options.UseSqlServer(connection));

        }

 

Und im Importbereich von Startup.cs muss man einen Verweis zum Verzeichnis .Models und einen Verweis zu DbContrext-Datei hinzufügen

using test_EF_Core2.Models;

using Microsoft.EntityFrameworkCore;

using static test_EF_Core2.Models.DbContext_Model;

 

Bevor man die Anwendung mit EF Entity Framework migrieren kann, muss man in den Model-Klassen / Tabllen noch jeweil einen Primary Key setzen.

Hier zu setzt man die Attibut-Zeile [Key] vor den Feld-Eintrag, welcher die ID-Spalte darstellt.

using System;

using System.Collections.Generic;

using System.ComponentModel.DataAnnotations;

using System.Linq;

using System.Threading.Tasks;

 

namespace test_EF_Core2.Models

{

    public class Products

    {

        [Key]

        public int IDProduct { get; set; }

        public string Title { get; set; }

    }

}

 

 

Migration und Übertragen aus SQL Server

# Code First

Erster Schritt… die Migration erstellen

PM> Add-Migration InitialCreate

 

Dadurch wird ein Verzeichnis /Migrations erstellt und die aktuelle Migrations-Datei nach Datum_Name.cs hinzugefügt

 

Und dann überträgt man die Struktur zum SQL Server mit:

PM> Update-Database

 

 

Datenbank in SQL-Server

 

Der SQL Server Object Explorer ist in Visual Studio vorinstalliert und befindet sich bei Menü->View->SQL Server Object Explorer.

Wenn man dann auf SQL Server->(localdb)->Databases die Datenbanken auflistet, dann findet man die namentlich gleiche Datenbank im Verzeichnis.

 

Wichtig ist dabei, dass in den Tabellen jeweils ein primarykey übernommen wurde.

 

Die Anweisung PM>Update Database erstellt somit die korrekten SQL Server Transscript Dateien auf dem SQL Server.

Mit dem passenden T-SQL script.

CREATE TABLE [dbo].[Products] (

    [IDProduct] INT            IDENTITY (1, 1) NOT NULL,

    [Title]     NVARCHAR (MAX) NULL,

    CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED ([IDProduct] ASC)

);

 

 

 

Das ist deshalb so wichtig, dass beim Eintragen von neuen Datensätzen die ID eindeutig hochgezählt wird und somit eine schnelle und eindeutige Struktur vorhanden ist.

 

Video Tutorial zur Lösung

https://www.youtube.com/watch?v=Ng_8uMdsqps

 

Mobile
»
ASP EF Error: Unable to create an object of type DbContext
»
Asp.net Fehler: No DbContext was found in assembly
»
Asp.net Fehler: The entity type xxx requires a primary key to be defined.

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Raimund.Popp@Microsoft-Programmierer.de