.net 我是否应该定义一个“单独的”;“数据上下文”;并在周围传递对它的引用或定义muliple“;“数据上下文”;我到底在哪里需要它们?
我有一个Silverlight应用程序,它由一个主窗口和几个在主窗口上更新和绘制图像的类组成。我现在扩展它来跟踪数据库中的所有内容 不谈细节,假设我有这样一个结构:.net 我是否应该定义一个“单独的”;“数据上下文”;并在周围传递对它的引用或定义muliple“;“数据上下文”;我到底在哪里需要它们?,.net,wcf,silverlight,wcf-data-services,.net,Wcf,Silverlight,Wcf Data Services,我有一个Silverlight应用程序,它由一个主窗口和几个在主窗口上更新和绘制图像的类组成。我现在扩展它来跟踪数据库中的所有内容 不谈细节,假设我有这样一个结构: MainWindow Drawing-Surface Class1 -- Supports Drawing DataContext + DataServiceCollection<T> w/events Class2 -- Manages "transactions" (add/delet
MainWindow
Drawing-Surface
Class1 -- Supports Drawing
DataContext + DataServiceCollection<T> w/events
Class2 -- Manages "transactions" (add/delete objects from drawing)
Class3
main窗口
图纸表面
类别1——支架图纸
DataContext+DataServiceCollection w/events
Class2--管理“事务”(从图形中添加/删除对象)
类别3
每个“类”都被传递一个对绘图表面的引用,以便它们可以独立地与它交互
我开始在Class1中使用WCF数据服务,它运行良好;但是,其他类也需要访问WCF数据服务。(我是否应该在主窗口中定义“DataContext”并向每个子类传递引用?)
Class1需要对“事务”数据进行读取访问,Class2需要对某些图形数据进行读取访问。所以我的问题是,在哪里定义我的DataContext最有意义
这样做有意义吗
MainWindow
Drawing-Surface
DataContext
Class1 -- Supports Drawing
DataServiceCollection<DrawingType> w/events
Class2 -- Manages "transactions" (add/delete objects from drawing)
DataServiceCollection<TransactionType> w/events
Class3
DataServiceCollection<T> w/events
main窗口
图纸表面
数据上下文
类别1——支架图纸
带事件的DataServiceCollection
Class2--管理“事务”(从图形中添加/删除对象)
带事件的DataServiceCollection
类别3
带事件的DataServiceCollection
一般来说,您不应该将上下文保留太长时间。上下文包含对您从中获得的所有实体的引用(除非您关闭更改跟踪),因此,如果您保留它,那么您也将保留内存中的所有实体。
如果您的访问是只读的,那么我只会考虑实体的生命周期(以及与它相关的内存消耗)。
如果您的访问是读写的,那么如果您有两个上下文,并且从其中一个对某个实体进行了更改,那么另一个将看不到它。因此,在这种情况下,您可能需要一个单独的上下文。但寿命问题仍然适用
因此,如果你知道你不会使用很多不同的实体,为了简单起见,我只会使用一个上下文(它允许你共享实例)。如果您知道要使用很多实体,那么我会考虑偶尔删除上下文(在应用程序的某个逻辑位置)。如果我要执行大量读取、大量更新和新记录,该怎么办?每节课大约100秒。你能把它归类为“很多实体”吗?100不是那么大的数字。但是,如果您已经有了会话的概念,我强烈建议您为每个会话创建一个新的上下文,并在完成会话后将其删除。