1

有幾個簡單的類:Fluent API,EF 4.1:繼承和外鍵的問題

第一類:

public class User 
{ 
    public int UserId { get; set; } 
    public string Username { get; set; } 

    // ... 

    public ICollection<Topic> Topics { get; set; } 
} 

第二類:

public class Publication 
{ 
    public int PublicationId { get; set; } 
    public string Title { get; set; } 

/... 

    public User Author { get; set; } 
} 

第三類:

public class Topic: Publication 
{ 
    public string TopicContent { get; set; } 

    // ... 
} 

爲我創建數據庫之後模型我有數據庫以下stucture:

用戶

用戶ID

用戶名

出版物

PublicationId

標題

TopicContent

作者用戶

User_UserId

正如你所看到的,我在表格Publications中得到兩個字段Author_UserId和User_UserId具有相同的作用。

如何使用Fluent API或Data Annotation將這些字段合併到一個字段中?

回答

1

我不認爲在Publications表中可能有相同的外鍵列。 Publication.AuthorUser.Topics不能是同一個關聯的端點。你可以有一個Publication實例,它是不是一個Topic和一個User參考:

User user = new User() { Topics = new List<Topic>() }; 
Publication publication = new Publication(); 

publication.Author = user; 

user.Topics.Add(???); 

在???您不能添加publication,因爲它不是Topic實例。 user.Topics必須引用除publication之外的另一個對象,這意味着這些端點不能屬於同一個關聯。

編輯

如果你只想要一個與數據庫中只有一個外鍵列單協會您必須從PublicationAuthor資源移至Topic或讓收集在你User類是指Publication而不是Topic

public ICollection<Publication> Publications { get; set; } 
+0

謝謝你的詳細解答。 – 2011-04-15 14:24:34