2012-07-04 36 views
0

嗨我有一個現有的數據庫與30個字段的表,我想將表拆分成許多模型,所以我可以檢索/保存我需要的字段,而不是每次檢索/保存整個來自db的對象。使用c#。實體框架4.1和現有的數據庫

我想我應該使用Code-First。有人可以提供一個例子或教程鏈接?

感謝,

回答

1

你並不需要分割表能夠加載領域的子集或持續領域的子集。兩個操作都可以在整個表映射到單個實體的情況下使用。

對於選擇你只需要使用投影:

var data = from x in context.HugeEntities 
      select new { x.Id, x.Name }; 

您可以使用投影是匿名類型或任何非映射類。

對於更新,你可以簡單地使用:

var data = new HugeEntity { Id = existingId, Name = newName }; 
context.HugeEntities.Attach(data); 
var dataEntry = context.Entry(data); 
dataEntry.Property(d => d.Name).IsModified = true; // Only this property will be updated 
context.SaveChanges(); 

或者:

var data = new HugeEntity { Id = existingId }; 
context.HugeEntities.Attach(data); 
data.Name = newName; 
context.SaveChanges(); // Now EF detected change of Name property and updated it 

映射多個實體單表必須遵循非常嚴格的規則,有可能只處理表拆分爲所有實體必須與一對一關係相關(並且在代碼優先的情況下,每個拆分表有多於兩個的實體存在一些問題),或者與每個層次結構的繼承有關。我認爲你不想在這種情況下使用它們中的任何一種。