【发布时间】:2017-03-30 14:00:06
【问题描述】:
当我在我的代码(C#,但它适用于我认为的任何语言)中使用工厂模式时,我总是问自己一个问题。
我有一个“服务”,负责与我的数据库交互、处理对象并与我的对象模型交互。
此服务有时使用工厂来委托对象的实例化。 但是这个工厂显然需要自己与数据库交互才能正确实例化我的对象。 例如,将数据库上下文传递给 Create 方法是好还是坏?
像这样:
var myNewObject = MyFactory.Create(myDatabaseContext);
另一种方法是让服务始终唯一与数据库对话。
var myNewObject = MyFactory.Create();
var extraProperty = myDatabaseContext.Get(something);
myNewObject.extraProp = extraProperty;
有什么建议吗?
【问题讨论】:
-
使用 DI 容器来创建上下文,不要让它成为工厂的工作或数据库的任何其他用户的工作
标签: c# entity-framework design-patterns dbcontext factory-pattern