假设我有以下POCO实体:
public class SomeEntity
{
public int SomeProperty { get; set; }
}
以及以下存储库
public class SomeEntityRepository
{
Context _context;
public SomeEntityRepository(Context context)
{
_context = context;
}
public List<SomeEntity> GetCrazyEntities()
{
return _context.SomeEntities.Where(se => se.SomeProperty > 500).ToList();
}
}
然后由于某种原因,我必须在SomeEntity上实现一个计算属性,如:
class SomeEntity
{
...
public List<SomeEntity> WellIDependOnMyOnRepositry()
{
...
return theRepository.GetCrazyEntities().Where(se => se.SomeProperty < 505).ToList();
}
}
如何使用正确的UnitOfWork实现来处理POCO实体知道存储库/上下文?
我一直在研究IoC和依赖注入,但是我太愚蠢了,无法理解它。
一些启示?
答案 0 :(得分:1)
如果没有阅读您在评论中提到的更新,我可以说您应该从某个域服务对象的存储库中获取疯狂实体,执行您需要的任何计算并将结果分配给您的实体。
另外,理想情况下,如果您想查看依赖注入(我们没有IoC容器),您的存储库应该实现一个接口。
如下所示:
public interface ISomeEntityRepository
{
List<SomeEntity> GetCrazyEntities();
}
public class SomeEntityRepository : ISomeEntityRepository
{
// ... Implementation goes here.
}
public class MyDomainService
{
private readonly ISomeEntityRepository Repository;
public MyDomainService(ISomeEntityRepository repository)
{
Repository = repository;
}
public SomeEntity WorkWithCrazyEntity()
{
var something = Repository.GetCrazyEntities();
var result = //.... do all sort of crazy calculation.
var someEntity = new SomeEntity();
someEntity.CalculatedProperty = result;
return someEntity;
}
}
希望这会给你一些想法。也许在你更新你的问题之后,我可以在你需要什么的背景下变得更好。
问候。