无法使用LINQ从db检索记录

时间:2017-05-22 20:18:04

标签: c# entity-framework linq

我正在尝试使用下面的

检索更新记录
var product= _db.Products.SingleOrDefault(x => x.Id == id);
if (product!= null)
{
    product.StatusId = statusId;
    _db.SaveChanges();
}

产品型号

public int Id { get; set; }
public int TypeId { get; set; }
public int? CategoryId { get; set; }
public int? StatusId { get; set; }
public string Name { get; set; }
public ProductStatus Status { get; set; }
public ICollection<ProductStatus> ProductStatuses { get; set; }

但是,在第一行中检索记录时,会抛出一个异常{"Invalid column name 'ProductStatus_Id'."} 我有一个ProductStatus表,但不确定它是否与它有任何关系

1 个答案:

答案 0 :(得分:1)

您的模型没有为ProductStatus表指定外键,因此它尝试使用EF的默认约定,即查找名为&#34; ProductStatus_Id&的字段#34;

您可以通过向ProductStatus_Id表添加名为Products的列(并将其设为FK到ProductStatus)来修复它,或者您可以使用数据注释来指定name(也有匹配的列)。

或者,如果您不需要Product.ProductStatus,请从Product删除该属性(您可以暂时进行测试。

编辑: 这个页面(第一个google点击&#34; ef外键&#34;,没有从属关系)有一些例子http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx