帮助设计我自己的粗略 DataContext

发布于 2024-08-18 21:31:33 字数 609 浏览 4 评论 0原文

我使用 TDD ASP.Net MVC 完成了一些 Linq 编程,并且喜欢它。离题了,我现在正在学习针对存储过程的网络表单,并且无法使用 linq。我想保留 MVC 所享有的一些松散耦合和可测试性。

我没有时间学习和设置依赖项注入基础设施,因此我创建了一个对象工厂,可以将其配置为根据需要创建模拟或实际实例。

这种方法的问题是工厂为我的测试存储库提供新实例,因此当实体 A 请求实体 B 的存储库时,它会获得一个新实例,而没有在我的单元测试上下文中进行更改 - 这就是问题。由于我的测试实例没有持久性机制,并且我没有使用依赖注入,因此我需要一种方法让实体 A 访问单元测试的当前数据上下文,以便它可以获得实体 B 的脏存储库。对于桌面应用程序,我通常会将我的 dataContext 创建为单例,但由于网络应用程序的并发问题,我已经排除了这种情况。

我正在寻找一个可以遵循的好模式。作为权宜之计,我要求使用数据上下文实例化所有存储库和业务对象,创建一种层次结构,其中 dataContext 使用 dc 实例化存储库,而 dc 又使用 dc 实例化业务对象。

我没有使用复合模式、继承或接口(除了模拟)。我不是一个面向对象的程序员,但这看起来很丑陋。有没有人有任何我应该遵循的好的模式建议,可以整理我的解决方案?

TIA

I've done a bit of Linq programming with TDD ASP.Net MVC and loved it. Digressing, I'm now learning webforms against stored procs and cannot use linq. I would like to retain some of the loose coupling and testability enjoyed with MVC.

I didn't have the time to learn and setup a dependency injection infrastructure so instead I created an object factory that can be configured to create either mock or actual instances depending on what is required.

The problem with this approach is the factory serves new instances of my test repositories, so when entity A asks for the repository for entity B it gets a fresh instance without the changes made in the context of my unit test - this is the problem. Since my test instances have no persistence mechanism and I'm not using dependence injection, I need a way for the Entity A to access the current data context of my unit test so it can get the dirty repository of Entity B. For desktop apps I'd usually create my dataContext as a singleton but due to concurrency issues with web-apps I've ruled that out.

I'm looking for a nice pattern to follow instead. As a stop gap I've required that all repositories and business objects be instantiated with a data context creating a kind of hierarchy where dataContext instantiates repository with dc which in turn instantiates business objects with dc.

I've not used a composite pattern, inheritance or interfaces (except for mocking). I'm not much of an OO programmer but this looks pretty ugly. Has any one got any nice pattern suggestions I should follow that could tidy up my solution?

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

表情可笑 2024-08-25 21:31:33

查找数据映射器模式,应该有很多示例,这是我们使用的方法,并且对我们来说效果很好。

Look up the data mapper pattern, there should be plenty of examples out there, this is the approach we use and it works well for us.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文