实体框架 - 按ID搜索

时间:2015-06-08 01:09:59

标签: c# entity-framework

我有一个名为Products的表和一个名为ProductDescription的表。 ProductDescription有一个名为ProductDescriptionID的主键。因此,要获得产品的描述,我需要访问这两个表。

这是我的代码,用于访问产品的描述,但我不知道如何解决它,因为我得到:“无法将lambda表达式转换为字符串,因为它不是委托类型”。

TerminateProcess

编辑:

        productDetailsVM.ProductDescription = db.ProductDescriptions
            .Where(c => c.ProductDescriptionID.Any(p => p.ProductID == id))
            .FirstOrDefault();

我如何实际编写此查询?

enter image description here enter image description here

3 个答案:

答案 0 :(得分:2)

我猜你的数据库可能是新的并且仍在开发中,你还没有定义Product和ProductDescription(ProductDescription表中ProductID的外键)之间的关系。

一旦你建立了这种关系并刷新了你的EF图表(假设你没有使用Code First),你就可以做到:

Component

这假定产品只有1个ProductDescription。

答案 1 :(得分:0)

不这样做吗?

 productDetailsVM.ProductDescription = db.ProductDescriptions
            .Where(c => c.ProductID == id)
            .FirstOrDefault();

答案 2 :(得分:0)

假设您希望产品包含单个描述,则必须将ProductId字段添加到ProductDescription表,或将ProductDescriptionID字段添加到Product表。 这称为实体拆分,您可以找到此方法的视频here.

假设您希望产品具有多个描述和描述多个产品(多对多),您需要一个"桥接表"只有两个字段(产品和描述ID)符合此桥表的主键,这样您将在模型中具有(多对多)关系,同样还有一个详细的视频here.