Tabela serwera SQL:
SomeId PK varchar(50) not null
OtherId PK int not null
Jak należy najpierw zamapować to w kodzie EF 6?
public class MyTable
{
[Key]
public string SomeId { get; set; }
[Key]
public int OtherId { get; set; }
}
Widziałem kilka przykładów, w których musisz ustawić kolejność dla każdej kolumny, czy to jest wymagane?
Czy jest gdzieś oficjalna dokumentacja na ten temat?
c#
sql-server
entity-framework
entity-framework-6
loyalflow
źródło
źródło
SomeId
astring
czy anint
?Odpowiedzi:
Zdecydowanie musisz ustawić kolejność kolumn, w przeciwnym razie skąd SQL Server ma wiedzieć, która z nich jest pierwsza? Oto, co musisz zrobić w swoim kodzie:
Możesz również spojrzeć na to pytanie SO . Jeśli potrzebujesz oficjalnej dokumentacji, polecam zajrzeć na oficjalną stronę EF . Mam nadzieję że to pomoże.
EDYCJA: Właśnie znalazłem post na blogu Julie Lerman z linkami do wszelkiego rodzaju dobroci EF 6. Można znaleźć co trzeba tutaj .
źródło
otherwise how is SQL Server supposed to know which one goes first?
- dlaczego nie w ten sam sposób, w jaki zna kolejność co drugiej kolumny?W przypadku klucza podstawowego Mapping Composite przy użyciu Entity Framework możemy użyć dwóch podejść.
1) Przez przesłanianie metody OnModelCreating ()
Na przykład: mam klasę modelu o nazwie VehicleFeature, jak pokazano poniżej.
Kod w moim DBContext wyglądałby tak:
2) Według adnotacji danych.
Aby uzyskać więcej informacji, skorzystaj z poniższych łączy.
1) https://msdn.microsoft.com/en-us/library/jj591617(v=vs.113).aspx
2) Jak dodać unikalny klucz złożony za pomocą EF 6 Fluent Api?
źródło
Poprzez konfigurację możesz to zrobić:
następnie w kontekście config
źródło
Pomyślałem, że dodam do tego pytania, ponieważ jest to najlepszy wynik wyszukiwania Google.
Jak zauważono w komentarzach, w EF Core nie ma obsługi używania adnotacji (atrybut klucza) i należy to zrobić z płynnym.
Ponieważ pracowałem nad dużą migracją z EF6 do EF Core, było to niesmaczne, więc próbowałem go zhakować za pomocą odbicia, aby wyszukać atrybut Key, a następnie zastosować go podczas OnModelCreating
Nie przetestowałem tego w pełni we wszystkich sytuacjach, ale działa to w moich podstawowych testach. Mam nadzieję, że to komuś pomoże
źródło