Collections 在多个类上拉伸对象的好方法

Collections 在多个类上拉伸对象的好方法,collections,mdi,Collections,Mdi,我有一系列订单。我希望访问数据库一次,检索订单,存储它们,然后能够通过多个表单访问此集合。我知道在asp.net中,您可以使用应用程序对象或会话对象,但如何在win form应用程序中实现这一点?我想创建一个静态集合,可以通过多个表单、类或任何地方访问。这听起来正确吗?甚至可行吗 谢谢您应该有一些数据对象可以访问数据库,对吗?将其包装在CacheProxy类中,如果数据库没有本地副本,则该类将命中数据库。我听说你也可以。你应该有一些数据对象可以访问数据库,对吗?将其包装在CacheProxy类中

我有一系列订单。我希望访问数据库一次,检索订单,存储它们,然后能够通过多个表单访问此集合。我知道在asp.net中,您可以使用应用程序对象或会话对象,但如何在win form应用程序中实现这一点?我想创建一个静态集合,可以通过多个表单、类或任何地方访问。这听起来正确吗?甚至可行吗


谢谢

您应该有一些数据对象可以访问数据库,对吗?将其包装在CacheProxy类中,如果数据库没有本地副本,则该类将命中数据库。我听说你也可以。

你应该有一些数据对象可以访问数据库,对吗?将其包装在CacheProxy类中,如果数据库没有本地副本,则该类将命中数据库。我听说你也可以。

WebForms和WinForms的根本区别在于WinForms是有状态的。换句话说,您可以确保您加载的对象在程序关闭之前可用。WebForms的情况并非如此,因为HTTP是无状态的,ASP.Net编织了许多“魔法”[视图状态、服务器会话、Cookies、隐藏字段等]来粘合web应用程序的页面

有了这个基本概念,就可以很容易地在WinForms中使对象全局可用。使用单例/静态类并分配其成员。你可以说,比如。。[对于静态类/具有静态属性的类]从任何形式检索值

其中一个问题是“线程安全”。。。又称作多个表单同时读取/写入静态属性。如果你能处理好这件事,休息就轻而易举了

对于您的上述问题:

您可以拥有自己的单例缓存类来缓存记录。缓存类将是一个自定义集合实现。您需要确保它是线程安全的[或者确保应用程序只加载一次,然后再读取]。。。如果需要对实体对象中反映的数据库进行更改,则需要考虑完整的ORM。


CacheList.OrderCache[orderNo].Customer.Address.City=“拉斯维加斯”

类静态缓存列表 { 公共静态缓存OrderCache{get;内部集;}

}

公共类缓存:CollectionBase,其中T:实体 {

}

WebForms和WinForms的根本区别在于WinForms是有状态的。换句话说,您可以确保您加载的对象在程序关闭之前可用。WebForms的情况并非如此,因为HTTP是无状态的,ASP.Net编织了许多“魔法”[视图状态、服务器会话、Cookies、隐藏字段等]来粘合web应用程序的页面

有了这个基本概念,就可以很容易地在WinForms中使对象全局可用。使用单例/静态类并分配其成员。你可以说,比如。。[对于静态类/具有静态属性的类]从任何形式检索值

其中一个问题是“线程安全”。。。又称作多个表单同时读取/写入静态属性。如果你能处理好这件事,休息就轻而易举了

对于您的上述问题:

您可以拥有自己的单例缓存类来缓存记录。缓存类将是一个自定义集合实现。您需要确保它是线程安全的[或者确保应用程序只加载一次,然后再读取]。。。如果需要对实体对象中反映的数据库进行更改,则需要考虑完整的ORM。


CacheList.OrderCache[orderNo].Customer.Address.City=“拉斯维加斯”

类静态缓存列表 { 公共静态缓存OrderCache{get;内部集;}

}

公共类缓存:CollectionBase,其中T:实体 {

}