2014-10-27 73 views
0

我有这样的SQL:实体框架联接查询基于SQL语句

SELECT * FROM [dbo].[INSTANCE] 
INNER JOIN dbo.TIME_INSTANCE on dbo.INSTANCE.INSTANCE_ID = dbo.TIME_INSTANCE.INSTANCE_ID 
where customer_id=15 and TIME_ID = 1013 

而且我试图使用实体框架来得到这个。我可以拉回来,从实例表的情况下是这样的:

DBContext.Instances.Where(x => x.CustomerID == id && x.StartDateTime >= dateRange).OrderBy(x => x.StartDateTime).AsQueryable(); 

如何执行联接像SQL上面,这样我做了一个内部联接上time_instance表?

+1

'.INCLUDE(加盟实体和contitions)' – 2014-10-27 21:56:34

+1

http://msdn.microsoft.com/en-us/library/bb896266 – 2014-10-27 22:06:20

+0

谢谢你,会很感激一个例子,我是新来的这个。 – pgtips 2014-10-27 22:12:12

回答

0

quietgrit ...我假设你在寻找一个能做同样事情的Lambda?

我能够嘲笑它并运行它对我的数据库。我将你的对象的名字复制到下面的查询中。我用< theNameOfYourDataBase> Container代替DbContext,但Lambda的笑话是一样的。让我知道这是否有帮助。

private myDbContainer db = new myDbContainer(); 

var myJoin = db.INSTANCE 
.Join(db.TIME_INSTANCE , i => i.PK_Category, ti => ti.FK_INSTANCE, ((i, ti) => new { INSTANCE = i,TIME_INSTANCE = ti })) 
.Select(joinedStuff => new { 
joinedStuff.INSTANCE.customer_id,//Fill in the rest of the properties you want in your query 
joinedStuff.TIME_INSTANCE.TIME_ID 
}).Where(n => n.TIME_ID == 1013 && n.customer_id == 15);//Add an .OrderBy() and or .GroupBy() 

最良好的祝愿, 比尔

+0

谢谢你。我希望有一种方法可以使用.Include()作为评论者的指示。 – pgtips 2014-10-28 13:27:44

+0

@quietgrit您的模型是否为您想要加入的表定义了导航属性? – BillRuhl 2014-10-28 14:44:10

+0

它不,但我想为我需要的表添加虚拟。 – pgtips 2014-10-28 18:33:56