Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC存储库模式:创建模型类_Asp.net Mvc_Model View Controller_Repository Pattern - Fatal编程技术网

Asp.net mvc MVC存储库模式:创建模型类

Asp.net mvc MVC存储库模式:创建模型类,asp.net-mvc,model-view-controller,repository-pattern,Asp.net Mvc,Model View Controller,Repository Pattern,回顾Conry的店面,我不明白为什么他使用Linqs自动生成类(即Order类),然后他定义了另一个Order类,它不是分部类。当使用存储库模式时,是否应该手动创建类,而完全忽略Datacontext 他在最近的一个视频中说,他不喜欢LINQ到SQL的映射方式。我同意,但我认为这完全是矫枉过正 我要说的是,只要您坚持存储库模式本身,就不会破坏任何主要的设计模式。我认为这是一个选择的问题,有两套课程a,都是坏的,仍然是一个选择。罗布在他的一个节目中回答了这个问题 他使用POCO类来识别所有数据访问

回顾Conry的店面,我不明白为什么他使用Linqs自动生成类(即Order类),然后他定义了另一个Order类,它不是分部类。当使用存储库模式时,是否应该手动创建类,而完全忽略Datacontext

他在最近的一个视频中说,他不喜欢LINQ到SQL的映射方式。我同意,但我认为这完全是矫枉过正


我要说的是,只要您坚持存储库模式本身,就不会破坏任何主要的设计模式。我认为这是一个选择的问题,有两套课程a,都是坏的,仍然是一个选择。

罗布在他的一个节目中回答了这个问题


他使用POCO类来识别所有数据访问类。例如,当他将LINQ改为SQL再改为NHibernate时,他所需要做的就是我在他的过滤器中更改他的“映射”,这样他就不必对业务逻辑进行任何更改。

如果你不使用中间类将前端与LINQ类解耦,你就无法控制数据上下文被垃圾收集。通常,对于数据上下文类型的实例,您希望在使用完它们后立即将其删除。下面是使用linq到sql上下文执行此操作的方法:

using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    return thing;
}
... the MyDataContext instance is gone
使用“using”块,您将在最后一个“}”处处理MYDataContext实例。但是,如果您这样做,您将得到一个错误,然后尝试使用“thing”,因为数据上下文实例已不存在。如果您不处理数据上下文,它将一直挂起,直到最终被垃圾回收

如果您引入一个中间类来将linq到sql代码与调用应用程序解耦,您仍然可以摆脱数据上下文实例并返回相同的数据(只是在不同的对象中):


希望这能有所帮助。

根据目前的答案,他似乎在使用LINQtoSQL作为传输的中间对象,就像人们在不确定连接两端的内容时使用XML作为中间步骤一样。完全正确。它是将数据层松散地耦合到站点的其余部分。因此,当他想要删除L2并用潜文本或其他任何东西替换它时,他只修改一个项目,而不是多个项目。
using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    SometThingElse otherThing = ConvertSomethingToSomethingElse(thing);
    return otherThing;
}
... the MyDataContext instance is gone