I think by "not using EF ORM designer" you mean new DbContext
API from EF 4.1. Because if you don't mean DbContext
API you still have to use EDMX (designer).
You can either use data annotations (System.ComponentModel.DataAnnotations
): KeyAttribute
and 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; }
}
Or you can use fluent API (overriding OnModelCreating
in your derived context):
(Edit: fluent mapping was reversed and incomplete)
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);
}
Where MyEntity
is your entity with FK and Registry
is principal entity in 1:1 relationship.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…