【发布时间】:2016-07-29 09:49:36
【问题描述】:
我正在尝试使用 Entity Framework 7 更新外键。但它给出了错误:在对象“X”中找不到属性“Y”。我尝试了许多不同的解决方案,但仍然无法正常工作。示例代码:
class X
{
property Y {get; set;} -> property Y is a foreign key and also a complex type
}
在表“X”中,我们有一个列“Y_ID”,它是外键。
注意:我只想更新外键。例如。 最初类'X'指向'NULL',我想更新类'X'指向'Y1'
Entity Framework 7 代码:
var x = this.GetX();
this.mainContext.Xs.Attach(x);
var xEntry = this.mainContext.Entry(x);
xEntry.Property("Y").CurrentValue = "Y1"; // Error at this line
await this.mainContext.SaveChangesAsync().ConfigureAwait(false);
详细错误:
找不到实体类型“X”的属性“Y”。确保该属性存在并且已包含在模型中。
编辑
Fabien 在他的评论中建议的方法效果很好。但问题是我们只知道在运行时要更新哪个属性。如果我使用反射来实现这一点,问题是实体框架将对象视为新对象并尝试创建它(INSERT),然后引发主键违规(不允许重复条目)
那么,有没有办法让我仍然无法更新在 EF 中充当外键的对象属性? (我不知道编译时的确切属性)。
【问题讨论】:
标签: c# sql-server entity-framework foreign-keys entity-framework-core