【发布时间】:2016-02-17 11:53:44
【问题描述】:
我在 Entity Framework 中使用 TPH 在我的数据库中创建了 Inventory 表。
public abstract class Inventory
{
public Guid Id { get; set; }
public DateTime On { get; set; }
}
public class CycleCountInventory : Inventory
{
public string Frequency { get; set; }
// and other properties
}
public class SkuGroupInventory : Inventory
{
public string SkuGroup { get; set; }
// and other properties
}
我有一个可以将物品添加到库存中的要求。但是,库存回购的行为应该根据库存类型而有所不同。我有一个包含对 repo 的引用的服务类,如下所示:
public class InventoryService : IInventoryService
{
public bool AddItems(Inventory inventory, IList<Guid> itemsGuidList)
{
// the inventory type is only known at this point
IInventoryRepo repo = (inventory is SkuGroupInventory)
? (IInventoryRepo) new SkuGroupInventoryRepo()
: new CycleCountInventoryRepo();
return repo.PerformInventory(itemsGuidList);
}
}
目前我正在通过手动检查加载IInventoryRepo 的不同实现。这种方法存在一些问题:
1. 我使用 Autofac 来解决所有依赖项......这种方法使我的代码难以测试
2.随着库存类型的增加,我的代码将变得难以管理
是否有任何模式(抽象工厂/策略等)我可以用来将解决依赖关系委托给 Autofac。我相信以前有人会遇到过这种情况。谢谢!
【问题讨论】:
标签: c# entity-framework design-patterns autofac