[英]One to many relationship is putting relationship explicitly on child
如果我有以下內容:
class Project
{
...
public virtual IList<URL> URLs {get;set;}
}
class URL
{
...
public virtual Project Project {get;set;}
}
創建的數據庫將ProjectID
添加到URLs
數據庫表中。
我如何強制實體為我創建關系表,以消除對URL
依賴, 而不必聲明一個名為ProjectURL
的新實體, ProjectURL
所示:
public class ProjectURL
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ProjectURLID { get; set; }
public URL URL { get; set; }
public Project Project{ get; set; }
}
我目前擁有的是 :
項目
ProjectID |
---------------------
64 |
網址
URLID | ProjectID |
---------------------
13 | 64
我要擁有的東西:
項目
ProjectID |
---------------------
64 |
網址
URLID |
---------------------
13 |
Project_URLs
URLID | ProjectID
---------------------
13 | 64
您將需要為您的URL實體配置映射,以便將其拆分為兩個表。 一個表將是URL,另一個表也將包含其他屬性(例如Project的前向鍵)。 看一下Map方法。
您的映射配置如下所示:
class URLMap : EntityTypeConfiguration<URL>
{
public URLMap()
{
Map(m =>
{
m.Properties(p => new {p.ID, p.Project});
m.ToTable("Project_URLs");
});
Map(m =>
{
m.Properties(p => new
{
p.ID,
// all other properties separated by ,
});
m.ToTable("URLs");
});
HasKey(p => p.ID);
}
}
請注意為兩個表定義相同的主鍵(在上面的示例中,我假設使用ID
屬性)。
編輯:在cas中,您不知道如何處理映射配置類。 您必須將此類的實例添加到DbContext.OnModelCreating
的重寫中:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new URLMap());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.