31
我在我的MVC 3應用程序中創建了一個實體類。其中一個名爲RegistryId的屬性是主鍵以及外鍵。如何創建列主鍵以及外鍵?我不使用EF ORM設計器。我正在手工編寫課程。實體框架中的主鍵/外鍵
我在我的MVC 3應用程序中創建了一個實體類。其中一個名爲RegistryId的屬性是主鍵以及外鍵。如何創建列主鍵以及外鍵?我不使用EF ORM設計器。我正在手工編寫課程。實體框架中的主鍵/外鍵
我認爲「不使用EF ORM設計器」是指EF 4.1的新API DbContext
。因爲如果你不是指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關係的主要實體。
@Hi Ladislav:如果有一對多的關係呢? – DotnetSparrow 2011-03-22 16:42:25
MyEntity中的一對多主鍵不能是外鍵。必須有其他FK財產或FK財產。 – 2011-03-22 16:44:58
@Ladislav:當我嘗試使用[ForeignKEy(「」)]時,它要求列名稱。我是否需要向其內部註冊表或註冊表實體的ID? – DotnetSparrow 2011-03-22 16:48:50