EF代码优先关系问题
本文关键字:关系 问题 代码 EF | 更新日期: 2023-09-27 18:27:37
我目前正在使用实体框架代码优先,但在使关系正常工作时遇到了一些问题。。
我有以下内容:
public class StockLevel : BaseEntity
{
public int ProductId { get; set; }
public int StockLevel { get; set; }
public virtual Product Product { get; set; }
}
我的Product表和实体已经在工作,但当我开始构建StockLevel表时,我希望它包括一个Product对象,所以在StockLevel表中,会有一个ProductId外键引用Product表上的产品,但我不想修改EF中的Product实体,但我得到了以下错误:
此关联的主体端必须使用关系fluent API或数据注释显式配置。
由于错误说明,您需要使用fluent API或Data Annotations配置关系。我更熟悉数据注释,所以我会在回答中使用它们。
要指示Product属性是使用ProductId设置的,您需要在ProductId属性中添加ForeignKey属性:
[ForeignKey("Product")]
public int ProductId { get; set; }
这应该足以让它发挥作用。有关详细信息,请参阅MSDN文章。
您可以实现如下的get和set方法:
public string ProductName
{
get
{
if (this.yourEntityReference.EntityKey == null) return "";
else return (string)this.yourEntityReference
.EntityKey.EntityKeyValues[0].Value;
}
set
{
this.yourEntityReference.EntityKey
= new EntityKey("YourDB.YourTable", "ColumnName", value);
}
}