それは 1 つのプロパティだけですか、それとも全面的にこれが必要ですか (つまり、モデル全体で、外部キー名が常に "Id" + NavigationPropertyName であるという規則が使用されています)。単一のエンティティの外部キーだけが必要な場合は、ForeignKey
属性を使用するだけの方がよいでしょう:
public class Guru
{
public int Id { get; set; }
public int? IdKotaLahir { get; set; }
[ForeignKey("IdKotaLahir")]
public virtual Kota KotaLahir { get; set; }
}
これは、EF5 と EF6 の両方で機能します。EF6 では、カスタム規則を使用して外部キー プロパティを構成できます。これが私が思いついたカスタム規則です:
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;
}
}
}
これについては、より詳細なブログ記事も書きました。