0

在 asp.net Web 应用程序中使用最新的 EF Code First CTP,我似乎遇到了问题。请原谅缺少代码(暂时),但我会尽力解释清楚。

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

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

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

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

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

我应该明天解决问题。但是,如果我无法找到问题,任何建议仍然会很好。

4

1 回答 1

0

我设法修复它。基本上我只需要告诉 DependencyResolver 我的 DbContext 实例是每个请求的。

希望这可以节省一些时间。

于 2010-12-17T09:19:48.670 回答