Sql EntityFramework的新增功能如何在linq中编写此查询到entity
我已经创建了模型,但是如何编写这个查询现在让我很困惑?有人能帮我吗?我使用老式的SqlConnection实现了这一点,但我被告知将其移植到Entity Framework 4。如果使用的是.edmx文件,您可以查看设计器并查看导航属性。与其用纯sql,不如考虑如何根据.edmx的导航属性构建要从数据库中提取的对象。如果使用的是.edmx文件,可以查看设计器并查看导航属性。与其用纯sql,不如考虑如何根据.edmx的导航属性构建要从数据库中提取的对象。如果表没有关系,则.edmx文件中没有导航属性。所以你的LINQ应该是这样的:Sql EntityFramework的新增功能如何在linq中编写此查询到entity,sql,entity-framework,linq-to-entities,Sql,Entity Framework,Linq To Entities,我已经创建了模型,但是如何编写这个查询现在让我很困惑?有人能帮我吗?我使用老式的SqlConnection实现了这一点,但我被告知将其移植到Entity Framework 4。如果使用的是.edmx文件,您可以查看设计器并查看导航属性。与其用纯sql,不如考虑如何根据.edmx的导航属性构建要从数据库中提取的对象。如果使用的是.edmx文件,可以查看设计器并查看导航属性。与其用纯sql,不如考虑如何根据.edmx的导航属性构建要从数据库中提取的对象。如果表没有关系,则.edmx文件中没有导航属
SELECT i.answerc, d.answera, d.answerb
FROM tableone AS u
INNER JOIN tabletwo AS i ON u.OneId = i.OneId
INNER JOIN tablethree AS l ON u.TwoId = l.TwoId
INNER JOIN tablefour AS k ON u.ThreeId = k.ThreeId
INNER JOIN tablefive AS p ON u.fourId = p.fourId
INNER JOIN tablesix AS d ON u.fiveId = d.fiveId
WHERE u.columnone = @parameter_one
AND l.columnone = @parameter_two
AND k.columnone = @parameter_three
AND p.columnone = @Parameter_four
其中参数xxx是变量。
但是如果你有导航属性,你应该使用它们 如果表不在关系中,则.edmx文件中没有导航属性。所以你的LINQ应该是这样的:
SELECT i.answerc, d.answera, d.answerb
FROM tableone AS u
INNER JOIN tabletwo AS i ON u.OneId = i.OneId
INNER JOIN tablethree AS l ON u.TwoId = l.TwoId
INNER JOIN tablefour AS k ON u.ThreeId = k.ThreeId
INNER JOIN tablefive AS p ON u.fourId = p.fourId
INNER JOIN tablesix AS d ON u.fiveId = d.fiveId
WHERE u.columnone = @parameter_one
AND l.columnone = @parameter_two
AND k.columnone = @parameter_three
AND p.columnone = @Parameter_four
其中参数xxx是变量。
但是如果你有导航属性,你应该使用它们 如果你建立了关系,我想你可以这样做
var query = from u in context.tableone
join i in context.tabletwo on u.OneId equals i.OneId
join l in context.tablethree on u.TwoId equals l.TwoId
join k in context.tablefour on u.ThreeId equals k.ThreeId
join p in context.tablefive on u.fourId equals p.fourId
join d in context.tablesix on u.fiveId equals d.fiveId
where u.columnone == parameterONE
&& l.columnone == parameterTWO
&& k.columnone == parameterTHREE
&& p.columnone == parameterFOUR
select new { i.answerc, d.answera, d.answerb };
如果你建立了关系,我想你可以这样做
var query = from u in context.tableone
join i in context.tabletwo on u.OneId equals i.OneId
join l in context.tablethree on u.TwoId equals l.TwoId
join k in context.tablefour on u.ThreeId equals k.ThreeId
join p in context.tablefive on u.fourId equals p.fourId
join d in context.tablesix on u.fiveId equals d.fiveId
where u.columnone == parameterONE
&& l.columnone == parameterTWO
&& k.columnone == parameterTHREE
&& p.columnone == parameterFOUR
select new { i.answerc, d.answera, d.answerb };
这是一个…有趣的…模式,我假设这些都是擦洗过的表名。我当然希望。是的,斯科特,他们是,不确定我被允许或应该公开什么,所以我确实删除了所有你需要包括你的模型的东西。这是一个…有趣的…模式,你在那里,我假设这些都是被删除的表名。我当然希望。是的,斯科特,他们是,不确定我被允许或应该公开什么,所以我确实擦洗了所有你需要包括你的模型的东西。谢谢,我知道这花了我一段时间,但我明白了你所说的导航属性。这是正确的方法。我选择了另一个答案,因为他确实回答了我最初的问题,但你和他都是对的。EF意味着不在SQLness和JOIN中思考。谢谢你帮我做对了。谢谢,我知道这花了我一段时间,但我明白你说的导航属性是什么。这是正确的方法。我选择了另一个答案,因为他确实回答了我最初的问题,但你和他都是对的。EF意味着不在SQLness和JOIN中思考。谢谢你帮我把它弄对。我确实使用了导航属性,就像克里斯,然后你提到的,这是更好更可读的方式。但是,感谢您也回答了最初的问题,无论它是多么无知……)我确实使用了导航属性,就像Chris,然后你提到的,这是更好的更可读的方式。但是,感谢您也回答了最初的问题,无论它是多么无知……)