Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can we change naming convention of foreign keys in DB in EF Code First CTP5?

I am using Entity framework Code First CTP5 and I am trying to find a way to add a convention to change how foreign keys name are generated. Here is an example:

public class Lead
{
    public int Id {get; set;}
    // A lot of other fields
    public virtual User AssignedTo { get; set; }
}

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

Lead can be associated to a user. The field generated in the DB for AssignedTo in the table Leads is called UserId.

My model is completely independent from entity framework. So I don't want to use attributes from EF. I would like to use the conventions if possible name the field AssignedToUserId for example.

like image 888
EtienneT Avatar asked Feb 24 '11 21:02

EtienneT


1 Answers

I'm not sure if this would be possible with pluggable conventions but you can use fluent API to achieve it:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Lead>()
                .HasRequired(l => l.AssignedTo)
                .WithMany()
                .IsIndependent()
                .Map(c => c.MapKey(u => u.Id, "AssignedToUserId"));
}
like image 126
Morteza Manavi Avatar answered Sep 22 '22 01:09

Morteza Manavi