2016-06-10 4 views
6

Chcę utworzyć prostą aplikację ASP.NET Core. Ale gdy próbuję wygenerować API kontroler dla mojego modelu dostaję następujący błąd: (zrzuty ekranu prezentuje kod dla klasy modelu i kontekstu db, poniżej jest kod dla klasy PodstawaJednostki)Błąd generatora kodu: Nie ma typu jednostki na DbContext

Setting up code scaffolding properties

Error

public abstract class EntityBase 
{ 
    [Key] 
    public int Id { get; set; } 
    public DateTime Modified { get; set; } 
    public DateTime Created { get; set; } 

    public EntityBase() 
    { 
     Created = DateTime.Now; 
     Modified = Created; 
    } 
} 
+0

jeśli używasz zmodyfikowany jako ścieżkę audytu, bardzo szybko Cię zawiodą. Możesz użyć innej metody. –

+0

W moim przypadku używanie tajemnic użytkownika było moim problemem. [https://github.com/aspnet/Scaffolding/issues/305](https://github.com/aspnet/Scaffolding/issues/305) – William

+0

Obecnie mam ten sam dokładny problem, ale jak odpowiedziałeś na własne pytanie; ani twoja odpowiedź, ani żadna inna nie pomogła rozwiązać mojego problemu. To dlatego, że nie mam żadnego Many-to-Many, klucz nie jest problemem; i mogę go przenieść na rusztowanie, jeśli używam ApplicationDbContext, ale nie moja własna klasa niestandardowa, która używa DbContext – Edward

Odpowiedz

0

Ok, więc znalazłem co było przyczyną tego błędu. Stworzyłem wiele do wielu relacji między klasztorem a grupą bez używania trzeciej klasy. Używałem do tego płynnego API.

Dzięki wszystkim za pomoc!

+0

co zrobiłeś, żeby to naprawić? – jsturtevant

+1

Stworzyłem klasę zawierającą wiele odniesień. – arche89

+0

Mam jeden, ale nadal otrzymuję błąd musi być coś innego. Dzięki – jsturtevant

0

Dodawanie [Key] mienia rozwiązuje problem, gdy nie istnieją wiele do wielu relacji i nie ma kluczy podstawowych w klasach

+1

Dodanie zmiennej ID do modeli naprawiło ten błąd. – Ginkgo

+0

nic dla mnie nie zrobił. Nie mam wiele-do-wielu, i tak czy inaczej normalny identyfikator int lub string zostanie przyjęty jako klucz – Edward

-1

W moim przypadku powodem było w nazywaniu dbContext.Database.Migrate() wewnątrz Startup.Configure(). Błąd został usunięty podczas usuwania.

1

Po rozwiązaniu tego samego problemu co wspomniany tytuł, ale bez żadnego problemu dotyczącego klucza lub relacji, w końcu znalazłem rozwiązanie tego problemu. Zwłaszcza z kontrolerami rusztowań/widokami z klas modeli, które zostały utworzone przez podejście bazujące na bazie danych. W swojej klasie DbContext ty MUSI MIEĆ konstruktor klasy, która przyjmuje parametr DbContextOptions<MyDb>, które z jakiegoś powodu nie zostanie dodany z polecenia „rusztowanie-DbContext” w konsoli Package Manager (z projektu ASPNETCORE)

public partial class MyDbContext : DbContext 
{ 
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) 
    { 
    } 
    public virtual DbSet<MyModel> MyModel { get; set; } 
} 

dla innych, jak również nie musi być ciąg połączenia w pliku appsettings.json i następujący kod w metodzie ConfigureServies z startup.cs plików dodatek:

se‌​rvices.AddDbContext<‌​MyDbContext>(opt‌​ions => options.UseSqlServer(Configuration.GetConnectionString("MyDbContection")));