Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

  • Id (PK, int, not null)

Bar

  • Id (PK, int, not null)
  • Foo_Id (FK, int null)

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; }
}
like image 661
Wheelie Avatar asked Apr 18 '11 09:04

Wheelie


1 Answers

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.

like image 85
Kamyar Avatar answered Oct 16 '22 02:10

Kamyar