Is this just one property, or do you need it in all directions (i.e. the whole model uses a convention where foreign key names are always "Id" + NavigationPropertyName)? If you only need a foreign key for a single object, you would be better off using the ForeignKey attribute:
public class Guru { public int Id { get; set; } public int? IdKotaLahir { get; set; } [ForeignKey("IdKotaLahir")] public virtual Kota KotaLahir { get; set; } }
This will work for both EF5 and EF6. In EF6, you can use user conventions to configure foreign key properties. Here is the usual convention I came up with:
public class NavigationPropertyConfigurationConvention : IConfigurationConvention<PropertyInfo, NavigationPropertyConfiguration> { public void Apply( PropertyInfo propertyInfo, Func<NavigationPropertyConfiguration> configuration) { var foreignKeyProperty = propertyInfo.DeclaringType.GetProperty("Id" + propertyInfo.Name); if (foreignKeyProperty != null && configuration().Constraint == null) { var fkConstraint = new ForeignKeyConstraintConfiguration(); fkConstraint.AddColumn(foreignKeyProperty); configuration().Constraint = fkConstraint; } } }
I also wrote a more detailed blog post about this.
Pawel Mar 23 '13 at 22:13 2013-03-23 ββ22:13
source share