Ograniczenia klucza obcegoForeign Key Constraints

Uwaga

Ogólnie rzecz biorąc jest odpowiednie dla relacyjnych baz danych konfiguracji w tej sekcji.The configuration in this section is applicable to relational databases in general. Metody rozszerzenia, pokazane tutaj staną się dostępne po zainstalowaniu dostawcy relacyjnej bazy danych (z powodu udostępnionej Microsoft.EntityFrameworkCore.Relational pakietu).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Wprowadzono ograniczenie klucza obcego dla każdej relacji w modelu.A foreign key constraint is introduced for each relationship in the model.

KonwencjeConventions

Zgodnie z Konwencją ograniczenia klucza obcego są nazywane FK_<dependent type name>_<principal type name>_<foreign key property name>.By convention, foreign key constraints are named FK_<dependent type name>_<principal type name>_<foreign key property name>. Złożone kluczy obcych <foreign key property name> staje się oddzielone znakiem podkreślenia listę nazw właściwości klucza obcego.For composite foreign keys <foreign key property name> becomes an underscore separated list of foreign key property names.

Adnotacje danychData Annotations

Nazwy ograniczenia klucza obcego nie można skonfigurować przy użyciu adnotacji danych.Foreign key constraint names cannot be configured using data annotations.

Interfejs Fluent APIFluent API

Interfejs Fluent API umożliwiają skonfigurowanie nazwę ograniczenia klucza obcego relacji.You can use the Fluent API to configure the foreign key constraint name for a relationship.

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Post>()
            .HasOne(p => p.Blog)
            .WithMany(b => b.Posts)
            .HasForeignKey(p => p.BlogId)
            .HasConstraintName("ForeignKey_Post_Blog");
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}