あなたはそれをする必要はありません。実際、オブジェクトを一貫性のない状態のままにしておくことができるので、そうすべきではありません。あなたが持っているとしましょう:
public class Category {
public Int32 Id { get; set; }
}
public class SomeClass {
public Int32 Id { get; set; }
public virtual Category Category { get; set; }
}
これは有効です。外部キーを見つける方法を構成でEFに指示する必要があります。上記に基づいて、を使用しようとしますSomeClass.Category_Id
が、好きなように変更できます。
編集:外部キーを変更したい場合は、構成クラスを追加し、OnModelCreating
イベント中に追加することで変更できます。
internal class ForSomeClassEntities : EntityTypeConfiguration<SomeClass> {
public ForSomeClassEntities(String schemaName) {
this.HasRequired(e => e.Category)
.WithMany()
.Map(map => map.MapKey("CategoryId"));
this.ToTable("SomeClass", schemaName);
}
}
オーバーライドされContext
たクラス:
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations
.Add(new ForSomeClassEntities("SomeSchema"))
;
}
上記と同じクラスを使用すると、EFはSomeClass.CategoryId
代わりに呼び出される外部キープロパティを探すようになります。