ABP 中的Unit Of Work使用一例

在EF中,如果我们定义了一对多关系如下:

namespace jiagoushi_cn.MyFlow.Core
{
    public class ProcessModel:Entity
    {
        public virtual string ProcessModelGuid { get; set; }

        public virtual string ProcessName { get; set; }

        public virtual string ProcessDescription { get; set; }
               
        public virtual ICollection<StateNode> StateNodes { get; set; }

        public virtual ICollection<StateTransfer> StateTransfers { get; set; }

        public virtual ICollection<ProcessVariable> Viriables { get; set; }
    }
}

那么如果我们使用DbContext获取一个ProcessModel的一个实例后,可以自动获取它相应的子实体的集合,比如:

            await UsingDbContextAsync(async context =>
            {
                var proc = await context.ProcessModels.FirstOrDefaultAsync(u => u.Id == process.Id);
                 proc.StateNodes.Count.ShouldBe(1);
            });

可是,如果在ABP中,如果我们使用IRepository获取ProcessModel的实例,如果访问它的子实体集合就会出错,比如下面的代码会出错:

   var model = _processRepository.Get(modelId);
    var lst=model.StateNodes.ToList();

这是因为IRepository的方法被作为工作单元处理,这个方法执行完,DbContext就会关闭,这时,如果再访问通过Respository获取的对象的子实体集合,就会出现错误。解决的办法是,将获取实例的代码和获取子实体集合的代码包括在相同的工作单元中,以避免DbContext被关闭,示例代码如下:

using (var uow = unf.Begin())
            {
                try
                {
                     var model = _processRepository.Get(modelId);
                     var lst=model.StateNodes.ToList();
                }
                finally
                {
                    uow.Complete();
                };
            }

这里,unf是 IUnitOfWorkManager,可以通过依赖注入获取。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,451评论 0 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 开学第一天正式上课,有点手忙脚乱,还好我们班班委做事情是很得力的,上午第一、二节课就是数学,虽然提前备课已经比较充...
    小幸甫阅读 206评论 2 3
  • 秋天是开学的季节,秋天是收获的季节,秋天是思念的季节。 每逢九月,时光转到了秋。看到孩子们背着书包上...
    鱼乐儿阅读 283评论 0 3
  • 愁 登楼 又一秋 彩笺怀袖 笙调和风奏 卿莫却传杯手 长歌心字付水流 雁叫霜寒月笑君忧 雨蚀几番醉别人成旧 良宵承...
    荐轩狂叟阅读 264评论 0 1