MVC 3アプリケーションでエンティティクラスを作成しました。 RegistryIdという名前の属性の1つは、主キーと外部キーです。列の主キーと外部キーを作成するにはどうすればよいですか? EF ORMデザイナーを使用していません。私はクラスを手作業でコーディングしています。
「EF ORMデザイナーを使用しない」とは、EF 4.1からの新しいDbContext
APIを意味すると思います。 DbContext
APIを意味しない場合でも、EDMX(デザイナー)を使用する必要があるためです。
データ注釈(System.ComponentModel.DataAnnotations
):KeyAttribute
およびForeignKeyAttribute
:
public class Registry
{
public virtual int Id { get; set; }
public virtual MyEntity MyEntity { get; set; }
}
public class MyEntity
{
[Key, ForeignKey("Registry")]
public virtual int RegistryId { get; set; }
public virtual Registry Registry { get; set; }
}
または、流暢なAPIを使用できます(派生コンテキストでOnModelCreating
をオーバーライドします)。
(編集:流暢なマッピングが逆になり、不完全だった)
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<MyEntity>()
.HasKey(e => e.RegistryId);
modelBuilder.Entity<MyEntity>()
.Property(e => e.RegistryId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
modelBuilder.Entity<MyEntity>()
.HasRequired(e => e.Registry)
.WithRequiredDependent(r => r.MyEntity);
}
ここで、MyEntity
はFKを持つエンティティであり、Registry
は1対1の関係の主要なエンティティです。