Wheelie
Wheelie

Reputation: 3916

How to customize foreign key column name using Entity Framework Code-first

I have the following model

public class Foo
{
    public int Id { get; set; }
    public IList<Bar> Bars { get; set; }
}

public class Bar
{
    public int Id { get; set; }
}

When I generate the database schema from this using EF Code first it creates the following tables:

Foo

Bar

Is it possible to change the name of the Foo_Id foreign key using attributes?

EDIT: Here is the version that does what I need:

public class Foo
{
    public int Id { get; set; }

    [ForeignKey("AssignedToBarId")]
    public IList<Bar> Bars { get; set; }
}

public class Bar
{
    public int AssignedToBarId { get; set; }
    public int Id { get; set; }
}

Upvotes: 9

Views: 14367

Answers (1)

Kamyar
Kamyar

Reputation: 18797

I think it can be done like below:

protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity.Map(c => c.MapKey(u => u.Id, "AssignedToBarID")); }

Or maybe:

[ForeignKey("AssignedToBarID")]
public IList<Bar> Bars { get; set; }

NOTE: I have not tested neither of them. These are just suggestions.

Upvotes: 8

Related Questions