entity-framework-6 - EF6,DbContext/POCO 设置虚拟导航属性以附加新对象:可能吗?
问题描述
我正在将一个非常旧的 EF6 edmx/ObjectContext 实现切换到 DbContext/POCO。我能够生成 POCO 模型,并且所有读取操作现在似乎都在工作。
我的问题是我有数千行代码可以执行以下操作:
var person = db.Persons.Single(x=> x.Id = 45);
var phone = new Phone { Person = person, Number = "123-456-7890"};
在旧的 edmx/ObjectContext 世界中,当我设置 时Person = person
,状态phone
将是Added
.
在新的 DbContext/POCO 世界中,这个 set 完全没有效果,状态仍然Detached
.
新模型代码使用类似这样的东西来创建导航属性:
public virtual Person Person { get; set; }
而旧的 edmx 代码是一个 getter setter,而 setter 正在这样做:
((IEntityWithRelationships)this).RelationshipManager
.GetRelatedReference<Phone>("Model.fk_Person_Phone", "Person")
.Value = value;
有什么方法可以使virtual
nav 属性的工作方式与旧方法类似,并将新对象附加到数据库?
解决方案
推荐阅读
- python - 通过循环将文件导出到新文件夹中?
- c++ - NMAKE:致命错误 U1077:返回代码“0x2”
- ios - BottomLayoutGuide iOS 10 与 iOS 11
- ruby - 网址中的 Mustermann::CompileError
- ios - 尝试使用轻量级迁移更新我的 DBModel,但没有任何反应
- javascript - 重定向网页时JavaScript不将值视为字符串
- php - 为什么对 Symfony 控制器的 jQuery AJAX 请求是并行处理而不是异步处理的?
- android - 在 Android 中将 FCM 消息从一台设备发送到另一台没有服务器的设备
- jenkins - 如何提取 Jenkins 管道中的源代码行数?
- python-3.x - “utf-8”编解码器无法解码字节和 IndexError:列表索引超出范围错误