1

尝试使用 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();
    }
4

0 回答 0