Moje problemy z kluczami obcymi w podejściu code-first w aplikacji ASP.NET


25 marca 2017 / Michał Kortas


Moja aplikacja na Daj Się Poznać powoli się rozwija. Wraz z tym ciągłym rozwojem musiałem dokonać modyfikacji struktury bazy danych. Do tabeli zadań konieczne było dodanie kolumny z ID użytkownika, któremu zlecamy zadanie (będzie kluczem obcym tabeli użytkowników). Istnieje już podobne powiązanie tych samych tabel – dla użytkownika tworzącego zadanie. Dodam jeszcze, że korzystam z możliwości code-first w Entity Framework.
Zmodyfikowałem więc szybko model „Zadania”. Początkowo miałem tylko jedno powiązanie:

Dostawiłem drugie:

Przystąpiłem to przygotowania migracji za pomocą konsoli NuGet:

Pudło! Otrzymałem taki komunikat:

Unable to determine a composite foreign key ordering for foreign key on type todo.team.Domain.Entities.Task. When using the ForeignKey data annotation on composite foreign key properties ensure order is specified by using the Column data annotation or the fluent API.

Szybki research i gotowe. Po drobnej modyfikacji mojej encji migracja przeszła poprawnie…

…, a baza została zaktualizowana za pomocą automatycznie wygenerowanego kodu.

Nie za bardzo rozumiałem wcześniej tworzenie relacji między tabelami w podejściu code-first, stąd ta pomyłka. Wklejam rozwiązanie, gdyby ktoś miał kiedyś podobny przypadek. Więcej o tworzeniu bazy na podstawie modelu aplikacji w nadchodzącym wpisie na blogu.

Stay tuned! 


Tagi:


Jedna odpowiedź do “Moje problemy z kluczami obcymi w podejściu code-first w aplikacji ASP.NET”

  1. Łukasz pisze:

    Czy moższesz podać kod kontrolera i widoku?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *