31

我在 MVC 3 应用程序中创建了一个实体类。名为 RegistryId 的属性之一是主键和外键。如何制作列主键和外键?我没有使用 EF ORM 设计器。我正在手工编写课程。

4

1 回答 1

55

我认为“不使用 EF ORM 设计器”是指DbContextEF 4.1 的新 API。因为如果您不是指DbContextAPI,您仍然必须使用 EDMX(设计器)。

您可以使用数据注释 ( System.ComponentModel.DataAnnotations):KeyAttributeForeignKeyAttribute:

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; }
}

或者您可以使用 fluent 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 关系中的主要实体。

于 2011-03-22T08:42:26.400 回答