2013-01-15 109 views
0

我們擁有一個擁有多個實體的數據庫,我以三個實體Case,Task和Note爲例。任何實體都可以有註釋,並且我們決定採用以下DB設計。Code First Supress外鍵生成

Case: 
    - CaseId 
    - Title 

Task: 
    - TaskId 
    - Title 

Note: 
    - NoteId 
    - Desc 
    - ParentId (will contain the PK of Case/Task etc but without FK constraint) 

的波蘇斯將是如下:

Case 
{ 
    CaseId 
    Title 
    Notes 
} 

Task 
{ 
    TaskId 
    Title 
    Notes 
} 

我們不希望有參照約束和所有的,因爲這些票據將不會被刪除。我們可以使用EDMX對此進行建模,並希望使用Code First方法。我們已經搜索過並查看了多態關聯的建議等。如果給定這種設計,首先使用代碼進行建模的最佳方式是什麼?提前致謝。

+0

你想讓代碼優先生成/遷移你的數據庫嗎? –

+0

是的,我們希望根據問題生成數據庫。 – Sam

+0

您無法爲建立數據庫時EF不會嘗試轉換爲FK約束的關聯建模。您必須手動加入Notes,例如在存儲庫中。 –

回答

0

我會建議你使用繼承 - 這是遵循從你的描述:

public class EntityWithNotes 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
    public Collection<Note> { get; set; } 
} 

public class Note 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
    public int ParentId { get; set; } 
} 

public class Case : EntityWithNotes { /* ...*/ } 
public class Task : EntityWithNotes { /* ...*/ } 

...和使用外鍵關聯。引用約束不僅僅是刪除。

+0

感謝您的回覆Dennis。如果你或者某人能夠指出我們的方法來解決最初的問題,那就是沒有/不能生成FK,我將不勝感激。 – Sam