加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC存储库模式:创建模型类

发布时间:2020-12-16 06:34:54 所属栏目:asp.Net 来源:网络整理
导读:回顾Conery的店面,我不明白为什么他使用了 Linqs自动生成的类(即Order类),然后他定义了另一个不是部分类的Order类.使用存储库模式时应该手动创建类,并完全忽略Datacontext吗? 解决方法 如果不使用中间类将前端与linq类分离,则无法使用数据上下文控制垃圾收
回顾Conery的店面,我不明白为什么他使用了 Linqs自动生成的类(即Order类),然后他定义了另一个不是部分类的Order类.使用存储库模式时应该手动创建类,并完全忽略Datacontext吗?

解决方法

如果不使用中间类将前端与linq类分离,则无法使用数据上下文控制垃圾收集.通常使用数据上下文类型的实例,您希望在使用它们后立即将其删除.以下是使用linq to sql上下文执行此操作的方法:

using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    return thing;
}
... the MyDataContext instance is gone

使用“using”块,您将在最后一个“}”处理MYDataContext的实例.但是,如果你这样做,你会得到一个错误,然后尝试使用“东西”,因为数据上下文实例已经消失.如果你不处理数据上下文,它会一直闲逛,直到它最终被垃圾收集.

如果您引入一个中间类来将linq与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

希望有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读