4
哪一个是实现业务对象(以及为什么)更受欢迎的方式?带上下文的业务对象?
没有单独的 “上下文”
class Product
{
public string Code { get; set; }
public void Save()
{
using (IDataService service = IoC.GetInstance<IDataService>())
{
service.Save(this);
}
}
}
而且用法是:
Product p = new Product();
p.Code = "A1";
p.Save();
设有独立的 “上下文”
class Product
{
private IContext context;
public Product(IContext context)
{
this.context = context;
}
public string Code { get; set; }
public void Save()
{
this.context.Save(this);
}
}
而且用法是:
using (IContext context = IoC.GetInstance<IContext>())
{
Product p = new Product(context);
p.Code = "A1";
p.Save();
}
这一切都在BL层(除使用示例)发生,没有关系数据库等IDataService是接口将数据层保存业务对象“的地方”。 IContext基本上以某种方式包装IDataService。实际业务对象更复杂,具有更多属性和相互引用(如Order - > OrderRow < - Product)。
我的看法是,第一种方法是(太)简单,第二个选择给单一的业务对象实例之外更多的控制权....?有这样的指导吗?
如果我想使用延迟加载与相关的业务对象(如产品有零件列表),这不是我想的选择吗?不,我有依赖上下文字段实施延迟加载.... – Harza 2012-05-14 10:24:28
我也标记了这一点,因为我也计划以各种方式坚持对象,这似乎是非常好的选择,但这个懒加载.... – Harza 2012-05-14 10:26:24
我不知道延迟加载的通用方法,它确实取决于您的用例。 – 2012-05-25 05:50:28