审查Conery的店面,我不明白他为什么使用Linqs自动生成的类(即Order类),然后他有另一个定义的类不是部分类。什么时候使用存储库模式应该手动创建类,并完全忽略Datacontext?MVC仓库模式:创建模型类
回答
如果你没有使用中间类来分离你的前端和linq类,那么你就无法控制数据上下文被垃圾收集。通常情况下,只要您完成了使用它们,您想立即删除它们的实例的数据上下文类型。这里是你会如何想用LINQ to SQL的情况下做到这一点:
using (MyDataContext data = new MyDataContext())
{
SomeThing thing = data.Things(t => t.ID == 1);
return thing;
}
... the MyDataContext instance is gone
随着“使用”块,你处置MYDataContext在最后的“}”的实例。但是,如果你这样做,你会得到一个错误,然后尝试使用“东西”,因为数据上下文实例已经消失。如果你不要处理数据上下文,它会一直挂起,直到它最终被垃圾收集。
如果你介绍的中介类从你仍然可以摆脱你的数据上下文实例调用应用解耦的LINQ to SQL代码,并返回相同的数据(只是在不同的对象):
using (MyDataContext data = new MyDataContext())
{
SomeThing thing = data.Things(t => t.ID == 1);
SometThingElse otherThing = ConvertSomethingToSomethingElse(thing);
return otherThing;
}
... the MyDataContext instance is gone
希望有所帮助。
他在他最近的一个视频中说他不喜欢LINQ to SQL映射的方式。我同意,但我认为这是完全矫枉过正。
我想说,只要你坚持存储库模式本身,你不会破坏任何主要的设计模式。我认为有两组classa是可以选择的,尽管它们是不好的,但仍然是一个选择。
Rob在他的一个节目中回答了这个问题。
他使用POCO类从所有数据访问类中获知。例如,当他将LINQ-to-SQL更改为NHibernate时,他将需要在他的过滤器中更改他的“映射”,并且他不需要对商务逻辑进行任何更改。
恰到好处。这是松散地将数据层耦合到网站的其他部分。所以当他想放弃L2S并用Subtext或其他东西替换它时,他只修改一个项目,而不是多个项目。 – 2009-01-14 00:52:02
- 1. 为MVC创建模型
- 2. 仓库属性模型
- 3. EF仓库模式与ChangeTracker
- 4. NHibernate的仓库模式
- 5. C中的仓库模式#
- 6. 通用类型仓库模式的Autofac XML/JSON配置
- 7. 我应该如何创建模型类来调用API(使用MVC模式)?
- 8. 创建一个模型类
- 9. 为XML创建模型类
- 10. 如何为HttpPostedFileBase类型创建MVC模型?
- 11. 创建xsd模式创建类
- 12. Laravel使用具有模式的表创建模型类
- 13. 使用类库和MVC模型
- 14. ASP.Net MVC创建视图多模型
- 15. Mvc 4 CodeFirst模型创建器外键
- 16. 模型动态创建 - 使用Asp.Net MVC
- 17. MVC .Net同时创建模型和相关模型
- 18. 为模型元组创建MVC自定义模型绑定器
- 19. ASP.NET MVC设计模式:DI,仓库,服务层
- 20. LINQ to SQL在ASP.NET MVC和仓库模式
- 21. MVC模式:需要先创建什么?
- 22. 如何创建的模型ID和模型类型
- 23. 数据仓库 - 维度建模
- 24. 模拟仓库与真实仓库/模拟数据
- 25. PHP设计模式工厂,仓库和...?
- 26. 没有界面的仓库模式
- 27. ASP.NET MVC查看模型库?
- 28. 在基于MVC的应用程序中创建模型类
- 29. Asp.net Mvc:使用LINQ to SQL创建模型类
- 30. MVC根据需要创建对象的接口的模式/库
根据到目前为止的答案,他似乎将LINQtoSQL用作传输的中间对象,这与人们使用XML作为中间步骤的方式相同,因为他们不确定连接的哪一端是什么。 – Soviut 2009-01-10 07:21:17