2011-07-12 225 views
24

在將其標記爲重複項之前,我已檢查了其他相關帖子,但它們未回答我的問題。將多個表映射到實體框架中的單個實體類

我正在使用具有2個1:1關係的表的舊數據庫。 目前,我有一個類型(1Test:1Result)爲這些定義的每個表 我想將這些特定的表合併成一個類。

目前各類這個樣子

public class Result 
{ 
    public   string  Id     { get; set; } 
    public   string  Name    { get; set; } 
    public   string  Text    { get; set; } 
    public   string  Units    { get; set; } 
    public   bool  OutOfRange   { get; set; } 
    public   string  Status    { get; set; } 
    public   string  Minimum    { get; set; } 
    public   string  Maximum    { get; set; } 

    public virtual Instrument InstrumentUsed  { get; set; } 

    public virtual Test  ForTest    { get; set; } 
} 


public class Test 
{ 
    public   int  Id   { get; set; } 
    public   string Status  { get; set; } 
    public   string Analysis  { get; set; } 
    public   string ComponentList { get; set; } 
    public virtual Sample ForSample  { get; set; } 
    public virtual Result TestResult { get; set; } 
} 

我寧願他們看起來像這樣

public class TestResult 
{ 
    public   int  Id    { get; set; } 
    public   string  Status   { get; set; } 
    public   string  Analysis  { get; set; } 
    public   string  ComponentList { get; set; } 
    public   string  TestName  { get; set; } 
    public   string  Text   { get; set; } 
    public   string  Units   { get; set; } 
    public   bool  OutOfRange  { get; set; } 
    public   string  Status   { get; set; } 
    public   string  Minimum   { get; set; } 
    public   string  Maximum   { get; set; } 

    public virtual Instrument InstrumentUsed { get; set; } 
} 

我目前使用流利的API,這些映射到我們的傳統Oracle數據庫。

將這些組合到一個類中的最佳方法是什麼? 請注意,這是一個遺留數據庫。改變表格不是一種選擇,在這個項目中創建視圖並不是一個可行的解決方案。

回答

31

如果兩個表中都有相同的主鍵,則可以使用實體分割來實現此目的。

modelBuilder.Entity<TestResult>() 
    .Map(m => 
     { 
     m.Properties(t => new { t.Name, t.Text, t.Units /*other props*/ }); 
     m.ToTable("Result"); 
     }) 
    .Map(m => 
     { 
     m.Properties(t => new { t.Status, t.Analysis /*other props*/}); 
     m.ToTable("Test"); 
     }); 

這裏是一個有用的article

+1

他們有相同的密鑰所以這應該在事件的映射關係工作他們沒有將它仍然有可能單獨或是無法在這個版本的框架尚未? –

+0

你將如何映射到樂器? – roland