我有一個叫做TypeA
的類型,並且在TypeA
的某個地方有TypeB
(其中除ID
和String
之外沒有任何東西)的屬性。手動添加DbSet或允許自動創建表格有什麼區別?
使用實體框架,我創建了DbSet
的TypeA
- public DbSet<TypeA>
。
這會在數據庫中的TypeB
列就好了 - 不過,我現在需要填入一些數據。由於原始DbContext
中不存在TypeB
,因此我無法向其播種數據。
因此,我將public DbSet<TypeB>
添加到我原來的DbContext
,它甚至沒有檢測到數據庫模式中的更改/差異。
所以,這讓我想知道,我的問題是,是否有建立在一個單獨的DbSet
是自動的關係產生什麼區別?
示例代碼
public class TypeA
{
public int id { get; set; }
public string name { get; set; }
public TypeB foo { get; set; }
}
public class TypeB
{
public int ID { get; set; }
public string name { get; set; }
}
這是偉大的,謝謝你 - 正如我所說的,我是不是能夠種子數據(外將其定義在'TypeA'的),但是,我創建了'DbSet'後,我能夠創建種子數據就好了。所以基本上,除了能夠直接訪問數據外,您還說「內部」有什麼差別? ......當它沒有觸發更新/檢測模式更改時,我只是被拋出。 – Wil
@William:沒錯:)如果你在一個複雜類型的實體上定義了一個屬性,那麼這個數據必須去某個地方。 'DbSet'知道這一點,並創建它需要的表格(以及可能的約束)。 –
輝煌 - 謝謝! +1並回答。 – Wil