Używam hierarchii "tabela-za-typ" w moim pierwszym projekcie kodu (EF5). Moi klas pochodnych przesłonić domyślną nazwę klucza podstawowego jasno określić tę zależność z punktu bazy widzenia tak:EF CodeFirst THT - Kolumna "Id" określona jako część tego MSL nie istnieje w MetaDataWorkspace
/* change primary keys to Chair.ProductId and Table.ProductId */
modelBuilder.Entity<Chair>()
.Property(x => x.Id)
.HasColumnName("ProductId");
modelBuilder.Entity<Table>()
.Property(x => x.Id)
.HasColumnName("ProductId");
Korzystanie następujące klasy jako przykład:
[Table("Product")]
public class Product
{
public int Id {get; set;}
/* generic product properties */
}
[Table("Chair")]
public class Chair : Product
{
/* specific chair properties */
}
[Table("Table")]
public class Table : Product
{
public virtual ICollection<Chair> Chairs {get; set;}
/* specific table properties */
}
co powoduje po błędzie na właściwość Table.Chairs: Kolumna "Id" określona jako część tego MSL nie istnieje w MetaDataWorkspace.
Co rozumiem jako EF prawdopodobnie nie widziałem, że PK Krzesło produkt został zmieniony .. (i nadal zakłada, że nazywa się "Id") Ale nie mogę dowiedzieć się, w jaki sposób polecam EF, aby użyć alternate klawisz.
Thx,
PS. Tak, wiem, jeśli nie zmienię nazw PK, to działa ... ale czy można to zrobić za pomocą EF Fluent API?
Znaleziony w roztworze po 30min napisałem. Wszystko co potrzebne do zrobienia było dodać następujący:. modelBuilder.Entity
Odpowiedz
Delegowanie Twojego komentarza jako odpowiedź:
Dodaj następujący:
Źródło
2015-04-09 18:01:35 Sameer
To jest jakiś bug modelu generatora EDMX w Visual Studio.
Aby rozwiązać to zrobić:
mam Visual Studio 2015 UDPATE 3
Źródło
2016-10-30 19:23:32 qub1n
Już miałem opublikować to pytanie i odpowiedź, aż znalazłem to. Chciałbym podkreślić ponowne uruchomienie Visual Studio. Cóż za dziwna poprawka. – christo8989
To rozwiązanie wydaje się działać dla mnie, ale problem polega na tym, że muszę ponownie wygenerować tabelę/model (za pomocą dev db), doda inne rzeczy, których nie potrzebuję (lub nie jestem pewien, że są w prod db), które mogą przerwać produkcję. – alltej
Myślę, że jest to uzasadniony błąd w generowaniu EF lub w VS. Podejrzewałem już, że coś nie działa poprawnie na moim komputerze lokalnym, ponieważ dodałem ręcznie kolumnę, która została zamieszczona tutaj: http://stackoverflow.com/questions/35950795/adding-a-new-column-to-an-isting-table-in -entity-framework/38795367 # 38795367 (odpowiedź, którą napisałem jakiś czas temu), ręcznie dodając kolumnę. Aby to udowodnić, proszę mojego współpracownika o ręczne dodanie kolumn w pliku edmx. Sprawdził kod, dostał najnowszą wersję mojego komputera i aktualizacja działa. – alltej
Powiązane problemy