【发布时间】:2010-03-19 12:28:35
【问题描述】:
我在 Visual Studio 2010 中有一个 winform 应用程序。我的应用程序执行以下操作
- 获取我需要读取数据然后插入数据库的文件列表。
- 对于每个文件,读取数据并插入数据库。
所以..这是我的代码。
// *******
// *** How should the _repository be Injected??
// *******
var list = _repository.GetFileList();
if (list != null)
{
int i = 0;
foreach(var file in list)
{
i++;
var service = new MyService(i, _repository);
service.ParseAndSave();
}
}
所以我希望为我创建的每个“服务”都有一个新的存储库。
首先,我不确定在这种情况下是否应该使用 IoC。我相信我应该这样做,因为这样我就不需要将此 winform 紧密耦合到存储库。
其次,我尝试使用 Singleton 存储库,但我不想要它并且可以确认它会杀死该代码(崩溃并出现异常)。
其他一些注释(不应该影响这个问题) - 使用 ASP.NET 4 的实体框架。 - 在 IoC 中使用 StructureMap
有人可以帮忙吗?
更新
哦,我忘了说。当我没有指定生命周期类型时(例如单例等)。我试图保存的对象,只是不保存。 (即没有任何东西发送到数据库,查看 SQL Profiler)。如果我使用带有一个文件的单例...它可以工作。具有 2 个以上文件的单例,然后由于(内部 EF)主键与实体框架冲突而导致异常/崩溃。因此,如果我应该使用单例,那么问题一定是我如何设置我的 EF4 上下文。
【问题讨论】:
-
如果您怀疑您的 IOC 配置不正确,发布您的配置会有所帮助。
-
我没有这样做,因为我不想影响答案 -> 我希望有人会在他们自己的 winform 示例中讨论他们所做的事情。是否有任何带有 Winform 的 IoC 的 SM 示例,您可能已经在某处提供了文档?
标签: .net winforms inversion-of-control structuremap repository-pattern