EF Code First“交易问题”

时间:2010-12-16 19:08:39

标签: entity-framework entity-framework-4 ef4-code-only

在asp.net网络应用程序中使用最新的EF Code First CTP,我似乎遇到了一个问题。请原谅缺乏代码(现在),但我会尽力解释。

在我的控制器中,我通过我的DI容器注入存储库工厂和IDataContext。 IDataContext只是我的DbContext的一个接口,存储库工厂本身也会注入其中一个。

我的问题是,当从存储库(从工厂)检索用户,然后在using(DataContext)块中添加一些属性 - 注入的IDataContext时,更改不会被保存。

如果我创建一个新用户 - 工作正常。但是当我将记录添加到用户的ICollection时,它们不会持续存在。

我创建了一个测试,使用一个DataContext创建用户,然后使用另一个DataContext(使用块)来添加记录。它工作正常(在这个create-dispose-create-dispose序列中)。

我的猜测是,在控制器中,IDataContext的不同实例正在影响发送到数据库的命令 - 甚至在此之前......

我明天应该把问题钉在上面。但如果我不设法追查这个问题,任何建议仍然会很好。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。基本上我只需告诉DependencyResolver我的DbContext实例是按请求。

希望这能节省一些人的麻烦。