尝试使用 IRepository 模式和实体框架代码优先获取对象。通常在调用存储库时,它会返回一个附加到上下文的对象,并且会跟踪更改。我现在的问题是存储库似乎只返回分离的对象。
将一个对象添加到另一个对象时,我的 savechange 会将彼此连接的两个对象都视为已插入,而不是插入一个对象并将另一个对象视为外来对象,因为容器由于某种原因被视为分离的。我知道它可以通过附加容器对象来解决,这不是我要寻找的,因为它应该在首先被查询时附加。
存储库
T FirstOrDefault(Expression<Func<T, bool>> predicate);
EFRepository(实现 IRepository)
public T FirstOrDefault(Expression<Func<T, bool>> predicate)
{
return Context.Set<T>().FirstOrDefault(predicate);
}
调用它
private readonly IRepository<VesselModel> _vesselRepository;
private readonly IRepository<InspectionModel> _inspectionRepository;
public Constr(IRepository<VesselModel> vesselRepository, IRepository<InspectionModel> inspectionRepository){
_vesselRepository = vesselRepository;
_inspectionRepository = inspectionRepository;
}
public void RunConnection(int vesselId){
var vessel = _vesselRepository.FirstOrDefault(x=> x.OrigId == vesselId);
var inspection = new Inspection{Vessel = vessel};
_inspectionRepository.Add(inspection);
_inspectionRepository.SaveChanges();
}