EF& LINQ:从数据库单元获取对象

时间:2015-04-28 16:00:27

标签: c# database linq entity-framework object

我使用Entity Framework Code First,我有三个表(例如):

<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>

这只是一个例子,实际上它更复杂。 实体Frmaework为我生成表,但表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;} } 包含列:MotorbikeIdPower(其中仅存储number-id引擎,而不是整个对象)和{{ 1}}(其中只存储数字 - id轮胎,而不是整个对象)。

我知道如何插入数据 - 只需创建新的摩托车对象,保存到他的字段数据(对于Engine_IdTire_Id字段我保存整个对象不仅是id)并使用Engine我的背景下的方法。

但是如何获取摩托车id为(例如)1的行的数据?

我尝试过这样的事情:

Tire

但我总是为.Add()List<Motorbike> motorbikes= new List<Motorbike>(); var list = _context.Motorbike.Where(p => p.Id == 1); motorbikes.AddRange(list); 字段设置为空(字段Id和Producent正确填充)。

2 个答案:

答案 0 :(得分: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 :(得分:1)

您正在寻找Include()方法。

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