2012-12-26 34 views
0

我尝试了几件事,但它不起作用。基本上,我想在EF MVC3上添加嵌套查询。实体框架MVC3的嵌套查询

SQL查询:

SELECT * FROM书其中Book_PK在

Book_PK是主键(从库 其中Library_Ref = '18bd9526-f3e9-4d5b-86cd-ccfea64b6f7b' 选择Book_Ref)图书
Book_ref是外键预订

Library_Ref只是属性过滤Book_ref

我有2个表:通过外键连接的图书和图书馆。

我只有一个输入,它是id,但这不是库的主键。 我曾尝试:

` 
School.Models.Entities.SchoolAll db = new Models.Entities.SchoolAll(); // db consists whole database 

var temp = db.Books.Where(e => e.Book_PK.Contains(db.Libraries.Where(f => f.Library_Ref == id))).ToList(); 
// where id is one of the field of Library` 

每个图书馆实体可以有一个或可预订的实体。所以,查询的结果应该是列表。我需要将这个列表保存到一个变量中。谁能帮我?

回答

0

成功完成,将下面的查询:

SELECT * FROM本书,Book_PK中(从库 其中Library_Ref选择Book_Ref = '18bd9526-f3e9-4d5b-86cd-ccfea64b6f7b')

到下面实体框架:

db.Books.Where(Y => y.L​​ibraries.Any(R => r.Library_Ref == ID))。ToList()

由于计算器

0

可以使用SINGL方法insetead在哪里,像下面

var temp = db.Books.Single(e => e.Book_PK.Contains(db.Libraries.Where(f => f.Library_Ref == id))); 
+0

您好,感谢您的回复。我试过你的解决方案。但它有2个错误: - string.Contains(string)'有一些无效参数 - 无法从'System.Linq.IQueryable '转换为'字符串' 什么是错?结果可能是多个项目/实体。 Single是否合适? –

+0

在EF LINQ查询您只能使用primitve类型,如int,字节串,...。你不能使用String.Contains方法,它 – Kisame

+0

嗯..你有什么其他的方式来表示我上面的查询?所有涉及的属性都在varchar中。 –