审查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. 从数据仓库中的星型模式创建视图
- 2. MVC仓库 - 域模型vs实体模型
- 3. MVC仓库模式 - 访问其他仓库
- 4. 数据仓库 - 星型模式解释
- 5. 为MVC创建模型
- 6. ASP.NET MVC 5.0模型类 - 如何在模型类中创建属性但不创建数据库字段
- 7. NHibernate的仓库模式
- 8. C中的仓库模式#
- 9. EF仓库模式与ChangeTracker
- 10. 创建模式类型Scala中
- 11. 通用类型仓库模式的Autofac XML/JSON配置
- 12. 我应该如何创建模型类来调用API(使用MVC模式)?
- 13. 创建一个模型类
- 14. 创建模型的子类
- 15. 为XML创建模型类
- 16. 创建数据库模式
- 17. Laravel,创建模式和模型
- 18. 使用MySQL Workbench从现有模式/模型创建数据库
- 19. 从应用程序模型创建数据库模式与否?
- 20. 如何为HttpPostedFileBase类型创建MVC模型?
- 21. 创建xsd模式创建类
- 22. 从enitity db类创建MVC模型类的最简单方法
- 23. 如何在大型数据仓库中为发票创建数据模型?
- 24. 使用类库和MVC模型
- 25. Laravel使用具有模式的表创建模型类
- 26. C#MVC动态创建视图模型
- 27. Mvc 4 CodeFirst模型创建器外键
- 28. MVC 3 ViewModel创建方法模型
- 29. 在Spring MVC中动态创建模型
- 30. ASP.Net MVC创建视图多模型
根据到目前为止的答案,他似乎将LINQtoSQL用作传输的中间对象,这与人们使用XML作为中间步骤的方式相同,因为他们不确定连接的哪一端是什么。 – Soviut 2009-01-10 07:21:17