Jak skonfigurować relacje One-to-One lub ZeroOrOne-to-One w Entity Framework 7 Code Najpierw użyj Adnotacji danych lub Fluent Api?Relacje jeden-do-jednego w Entity Framework 7 Code First
Odpowiedz
Można zdefiniować relację OneToOne użyciu Fluent API w Entity Framework 7 poniżej
class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<BlogImage> BlogImages { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.HasOne(p => p.BlogImage)
.WithOne(i => i.Blog)
.HasForeignKey<BlogImage>(b => b.BlogForeignKey);
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public BlogImage BlogImage { get; set; }
}
public class BlogImage
{
public int BlogImageId { get; set; }
public byte[] Image { get; set; }
public string Caption { get; set; }
public int BlogForeignKey { get; set; }
public Blog Blog { get; set; }
}
I coś, co nie było oczywiste mnie, i nie ma gdzie znaleźć w dokumentacji (lub tęsknię za nią), jeśli chciałbyś, aby BlogImage miał jedną do zera lub jedną relację do bloga, zamiast jednego do jednego (np. BlogImage na własną rękę, że opcjonalnie nie odwołuje się do bloga, wystarczy tylko wprowadzić komentarz BlogImage.BlogForeignKey, np. public int? BlogForeignKey {get; set;} –
Czy ta właściwość jest naprawdę wymagana? 'public int BlogForeignKey {get; set;}' –
Powyższa odpowiedź jest absolutnie poprawne.
Tylko dla informacji czytelników: Zostało to wyjaśnione ładnie w relacjach official documentation
jeden-na-jeden
Jeden do jednego mają właściwość nawigacji referencyjny po obu stronach. Podlegają one tym samym konwencjom, co relacje jeden-do-wielu, ale unikalny indeks jest wprowadzany do właściwości klucza obcego, aby zapewnić, że tylko jedna zależna jest powiązana z każdą główną.
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public BlogImage BlogImage { get; set; }
}
public class BlogImage
{
public int BlogImageId { get; set; }
public byte[] Image { get; set; }
public string Caption { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
Uwaga
EF wybiorą jeden z podmiotów, być zależny na podstawie jego zdolności do wykrycia właściwości klucza obcego. Jeśli niewłaściwy podmiot zostanie wybrany jako zależny, możesz użyć Fluent API, aby to poprawić.
Naprawdę muszę zdefiniować tę właściwość? 'Public int BlogId {get; set;}' –
@MohammedNoureldin Właściwość 'public int BlogId {get; set;}' jest potrzebna, ponieważ '" EF wybierze jedną z encji być zależnym w oparciu o jego zdolność wykrywania właściwości klucza obcego. "Zobacz notatkę na https://docs.microsoft.com/en-us/ef/core/modeling/relationships w sekcji Jeden do jednego innych wzorów relacji. –
- 1. Entity Framework Code First ReadOnly Entity
- 2. Integracja Npgsql z Entity Framework Code First
- 3. Wyjątki dla Entity Framework Code First Migrations
- 4. MembershipUser i Entity Framework Code First
- 5. Code First Entity Framework - zmień ciąg połączenia
- 6. Entity Framework Code First - ignorowanie klasy bazowej
- 7. Entity Framework Code First Lazy Loading
- 8. Typ SQL "czas" w Entity Framework Code First
- 9. Konwertuj DbContext na Datatable w Code first entity framework
- 10. Jak obsłużyć klucz podstawowy w Entity Framework 5 Code First
- 11. Jak dodać prefiks tabeli w Entity Framework Code First Globally?
- 12. Code First vs. Database First
- 13. Korzystanie wyliczenia z Code First & Entity Framework 5
- 14. Tworzenie repozytorium przy użyciu Entity Framework Code First 4.3
- 15. Entity Framework Code First - No Detach() metoda na DbContext
- 16. Entity Framework 5 Code First - Jak "zacząć od nowa"?
- 17. Entity Framework Code First Migrations: programowo pobieraj skrypty sql
- 18. Entity Framework 5 Code First Self-Referencing Relationship
- 19. Jak zignorować właściwość przy użyciu Entity Framework Code First
- 20. Entity Framework Code First Migracje: Set Primary Key Value
- 21. Entity Framework Code-First Issues (SimpleMembership UserProfile table)
- 22. Metoda niestatyczna wymaga celu. Entity Framework 5 Code First
- 23. Wzór projektu do użycia z Entity Framework Code First
- 24. Cascade Usuń, ta sama tabela, Entity Framework 4 Code First
- 25. Entity Framework Code First: SaveChanges nie jest atomowy
- 26. Entity Framework Code First Wiele do wielu relacji i dziedziczenia
- 27. Entity Framework Code First - Przesyłaj smallint i integer do int32
- 28. Filtr z wieloma klasami pochodnymi z Code-first Entity Framework
- 29. Entity Framework 4 Code-First za i przeciw
- 30. Entity Framework CTP5 (Code First) Modeling - tablice przeglądowe
Przeczytaj ten [artykuł] (http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx) –