尝试使用具有Entity Framework Code First的IRepository模式获取对象。通常在调用存储库时,它将返回附加到上下文的对象,并且将跟踪更改。我现在的问题是存储库似乎只返回分离的对象。
当将一个对象添加到另一个对象时,我的savechange会将连接到彼此的对象视为插入而不是插入一个并将另一个对象连接为异物,因为由于某种原因,容器被处理为分离。我知道它可以通过附加容器对象来解决,这不是我正在寻找的东西,因为它应该在首先查询时附加。
IRepository
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();
}