Foreign Key-EinschränkungenForeign Key Constraints

Hinweis

Die Konfiguration in diesem Abschnitt gilt allgemein für relationale Datenbanken.The configuration in this section is applicable to relational databases in general. Die hier gezeigten Erweiterungsmethoden werden verfügbar, wenn Sie einen relationalen Datenbankanbieter installieren (aufgrund des gemeinsam genutzten Pakets Microsoft.EntityFrameworkCore.Relational).The extension methods shown here will become available when you install a relational database provider (due to the shared Microsoft.EntityFrameworkCore.Relational package).

Eine foreign Key-Einschränkung wird für jede Beziehung im Modell eingeführt.A foreign key constraint is introduced for each relationship in the model.

KonventionenConventions

Foreign Key-Einschränkungen werden gemäß der Konvention benannt 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>. Für zusammengesetzte Fremdschlüssel <foreign key property name> wird ein Unterstrich getrennt von Fremdschlüsseleigenschaft Namen.For composite foreign keys <foreign key property name> becomes an underscore separated list of foreign key property names.

DatenanmerkungenData Annotations

Namen der foreign Key-Einschränkung können nicht mithilfe von datenanmerkungen konfiguriert werden.Foreign key constraint names cannot be configured using data annotations.

Fluent-APIFluent API

Sie können die Fluent-API verwenden, so konfigurieren Sie den Namen der foreign Key-Einschränkung für eine Beziehung.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; }
}