【问题标题】:Does the ObjectDataSource just really suck? [closed]ObjectDataSource 真的很烂吗? [关闭]
【发布时间】:2010-02-15 02:03:57
【问题描述】:

除了 SiteMap 数据源之外,我从来不需要真正使用任何 .NET 数据源,但是我正在尝试利用需要分配数据的控件上的内置 CRUD 操作源才能正常工作。

当我一直在研究有关实现 ObjectDataSource 及其相关类的在线信息时,我已经意识到它的明显令人不安的地方,事实上它基本上是一个静态类,它应该能够神奇地处理一种类型的 CRUD 操作。一旦我意识到这一点,我无论如何都无法正确设计这些适配器,因此它们不会像血友病患者那样引起关注。

我想出的唯一想法是,如果该类在其每个操作中利用服务定位器模式来获取执行实际 CRUD 的正确类。仅通过控制反转容器中的.Resolve 使用这在某种程度上是可行的,但是这似乎只是通过需要对我的 IOC 框架做很多魔术来始终解决问题,我将关注点转移到一个更不明显的地方数据代理的正确实例。

我真正需要适配器做的只是调解调用以将 CRUD 操作应用于 ViewState 支持的IList<MyBizObject>

在写完这个问题后,我开始思考如何使用 Model-View-Presenter 模式进行逻辑分离,我看到的第一个解决方案是因为我的 Presenter 类有一个属性我的视图,我可以使用Container.Resolve<Presenter>(),这将使我能够访问我的视图,这将使我能够访问我的 ViewState 支持的字段,并为每个需要其视图以拥有 ObjectDataSource 的演示者创建一个类。

除了我对此的最后想法之外,还有其他人有任何意见或替代方案吗?

【问题讨论】:

  • 请以问题的形式表达问题......不是咆哮

标签: .net inversion-of-control objectdatasource encapsulation


【解决方案1】:

要回答我自己的问题,是的,这真的很糟糕。但是,使用服务定位器模式,可以将有状态页面视图状态或任何其他类型的有状态存储库公开给无状态对象数据源提供程序类。

【讨论】:

  • 爱 DV 没有任何理由反对我的话,我坚持我的回答。期望静态方法的类很糟糕。
  • 你有我的支持。完全同意 ObjectDataSource 糟透了这个简单的事实 :) 我希望在 ASP.NET 中没有使用 SqlDataSource 和 ObjectDataSource 的声明方式。大多数书籍和演示都在教人们编写糟糕的、耦合的和不可维护的 2 层应用程序。
  • 我完全同意 Piotr 的观点,具有讽刺意味的是,去年 4 月,我在 DevConnections 上为推出 VS2010 编写了 ObjectDataSource 的 1 个(或 THE)原始 Microsoft 开发人员,甚至他也能够承认这一切都是静态的事实是可怕的设计。
猜你喜欢
  • 2011-01-02
  • 2015-04-16
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多