Używam Entity Framework 6-code-first z istniejącą bazą danych, ale mam problemy z odwzorowaniem moich jednostek na tabele bazy danych.Code-first: Mapowanie obiektów z istniejącymi tabelami bazy danych
Zwykle używałbym podejścia bazującego na bazie danych i generowanego kodu podmiotu i kontekstu, ale korzystanie z projektanta stało się ogromnym problemem.
Ustawiłem Database.SetInitializer (null), ponieważ nie chcę, aby EF zmieniał mój schemat.
schematu bazy danych:
Code-pierwszy:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class ReleaseControlContext : DbContext
{
public ReleaseControlContext()
: base(ConfigurationManager.ConnectionStrings["ReleaseControl"].ConnectionString)
{
Database.SetInitializer<ReleaseControlContext>(null);
}
public DbSet<Project> Projects { get; set; }
}
Kod telefoniczny:
using(var context = new ReleaseControlContext())
{
var projects = context.Projects.ToList();
}
Poniżej jest wyjątek:
SQLException Nieprawidłowy nazwa obiektu 'dbo.Projects'.
To dlatego mój tabeli bazy danych jest Projekt a nie Projekty. Nie chcę zmienić nazwy mojego kontekstu na DbSet<Project>
na "Projekt", ponieważ byłoby to semantycznie niepoprawne.
Pytanie:
Czy muszę używać biegle adnotacji danych API/mapowanie pomiędzy Projektu tabeli bazy danych i zbiorów DbSet<Project> Projects
?
mam wonderung dlaczego to nie działa
DbContext
; Tabelę należy nazwać Pomijanie projektów, ale jak już powiedziałeś, możesz użyć adnotacji Danych, aby wymusić nazwę [Tabela ("Projekty")]. –spróbuj wywołać inicjator przed utworzeniem DBContext; połóż to gdzieś na zewnątrz. –