2015-04-28 54 views
0

找對象我使用實體框架代碼第一次和我有三個表(例如):EF和LINQ:從數據庫細胞

public class Motorbike() 
{ 
    public int Id {get; set;} 
    public string Producent {get; set;} 
    public Engine Motor {get; set;} 
    public Tire Tires {get; set;} 
} 

public class Engine() 
{ 
    public int Id {get; set;} 
    public int Power {get; set;} 
    public decimal Price {get;set;} 
} 

public class Tire() 
{ 
    public int Id {get; set;} 
    public int Size {get; set;} 
    public decimal Price {get; set;} 
} 

這只是例子,其實它更復雜。 Entity Frmaework爲我生成表,但表Motorbike的列有:IdPowerEngine_Id(其中只存儲數字 - 引擎,而不是整個對象)和Tire_Id(其中只存儲數字 - 輪胎,而不是整個對象)。

我知道如何插入數據 - 只要創建新的摩托車對象,並保存在他的字段數據(EngineTire領域我保存整個對象不僅ID),並使用.Add()方法從我的背景。

但如何得到摩托車id是(例如)1行的數據?

我已經試過這樣的事情:

List<Motorbike> motorbikes= new List<Motorbike>(); 
var list = _context.Motorbike.Where(p => p.Id == 1); 
motorbikes.AddRange(list); 

但始終我得空了EngineTire場視頻(Id和PRODUCENT正確填寫)。

+0

你能提供關於你的實體框架和數據庫定義的更多信息嗎? – Barett

回答

2

使用Include加載相關實體,如:

var list = _context.Motorbike 
        .Include(m=> m.Engine) 
        .Include(m=> m.Tire) 
        .Where(p => p.Id == 1); 

參見:Entity Framework - Loading Related Entities

+1

打了我一分鐘:) –

+0

@Habib:每天都是上學的日子:)非常感謝。作爲附加信息:有必要添加'using System.Data.Entity;'以避免'不能將lambda表達式轉換爲'string'類型,因爲它不是委託類型錯誤。 –

1

您正在尋找的Include()方法。

List<Motorbike> motorbikes = _context.Motorbike 
    .Include(p => p.Engine) 
    .Include(p => p.Tire) 
    .Where(p => p.Id == 1) 
    .ToList();