c# - 使用 MVVM 中的实体框架从数据库修改实体时出现 ObjectContext 错误
问题描述
我正在创建一个 WPF 应用程序。我有一个 Oracle 数据库,其中有一个名为Register
并与表有关系的 Name
表。我已经使用实体框架创建了模型,并且我有一个与视图模型绑定的 WPF 表单,以创建一个新名称并将其分配给一个寄存器。
现在,当我创建一个新名称时,我获取了一个寄存器,并将该名称分配给注册表,如下所示:
public class CreateRegisterViewModel : ViewModelBase
{
private BLName blName = new BLName();
private BLRegister blRegister = new BLRegister();
private REGISTER register;
public CreateRegisterViewModel() { }
public CreateRegisterViewModel(REGISTER register)
{
this.register = register;
}
public void CreateName()
{
Name name = new Name();
Name.FirstName = FirstName;
Name.SecondName = SecondName;
blName.CreateName(name);
register.NAMES.Add(name);
blRegister.ModifyRegister(register);
}
}
我调用 ModifyRegister 方法的业务逻辑类如下所示:
public class BLRegister : IDisposable
{
private DARegister da = new DARegister();
public void ModifyRegister(REGISTER register)
{
try
{
da.ModifyRegister(register);
}
catch (Exception)
{
throw;
}
}
}
在业务逻辑中,我从这样的数据访问类调用 ModifyRegister:
public class DARegister: IDARegister {
private Entities context = new Entities();
public void ModifyRegister(REGISTER register) {
var entity = context.REGISTER.Where(i => i.ID_REGISTER == register.ID_REGISTER).FirstOrDefault();
if (entity != null) {
entity.CREATION_DATE = register.CREATION_DATE;
entity.MODIFY_DATE = register.MODITY_DATE;
entity.NAMES = register.NAMES;
entity.SERIAL = register.SERIAL
context.SaveChanges();
}
}
}
这是从这样的接口扩展方法:
interface IDARegister : IDisposable
{
void ModifyRegister(REGISTER register);
}
现在,我的问题是当我从 ViewModel 运行 CreateName 方法时,它会抛出下一个错误:
SIGEPE.BussinesLogic.dll 中发生了“System.InvalidOperationException”类型的异常,但未在用户代码中处理 两个对象之间的关系无法定义,因为它们附加到不同的 ObjectContext 对象。
我不知道引用两个 ObjectContext 是什么意思,我是 C# 和实体框架的新手,我不知道我的错误在哪里。我该如何解决这个问题?可能是数据库的问题还是实体框架的问题?
解决方案
推荐阅读
- c++ - 如果系统内存足够,C++ 字符串是否可以包含无限数量的字符,并且 size_t 可以表示如此极端的长度吗?
- sonarqube - SonarQube 静态代码分析报告在本地声纳服务器而不是远程声纳服务器上发布
- mysql - MySQL 获取与其他记录有时间差的记录
- jquery - Laravel / Vuejs 链接共享
- listview - Oracle jet :: 在排序/过滤时在列表视图项(模型)中保留按钮设置状态
- javascript - 使用 await 和 async 承诺作用域
- javascript - 模块显示模式的参考错误
- python - 将 json 补丁应用到 Mongoengine 文档
- hsm - 使用 PKCS11 设置 Docker
- python - 如何使用 Group By 和 Join 访问对象 User (django admin)?