- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个 WPF MVVM 应用程序,使用 MVVM Light 作为 MVVM 框架,Entity Framework 作为 ORM,MS 同步框架作为将 Local Sql Compact DB 与在线 SQL 数据库同步的手段。该应用程序的范围也相当复杂,因为它旨在管理 Assets ,计算该 Assets 在其生命周期内的使用磨损。谢天谢地,我对所有这些技术都是新手,所以无知是幸福 :) 我找到了很多关于创建工作单元模式和存储库模式的教程和信息。但是,我正在使用新的 DbContext,我已经阅读过它已经使用了这两种模式。
我当前的问题与在 Entity Framework 中使用新的 DbContext 有关。我在 VS 中使用过 DbContext Generator 模板,所以我有一个 MyDbModelContainer。我直接从我的 View 模型中使用了它,它为每个 VM 创建了一个上下文,我很确定这是一个坏主意。这是我的父/子类型数据输入场景的构造函数,我在此处构造容器,它们使用 MVVM Light 将选定项目的消息传递给子 VM。
Private FatigueDbContext As FatigueModelContainer
Public Sub New()
If IsInDesignMode = False Then
FatigueDbContext = New FatigueModelContainer
FatigueDbContext.CtMaterials.Load()
CtMaterialsCollection = FatigueDbContext.CtMaterials.Local
FatigueDbContext.CtManufactures.Load()
CtManufactures = FatigueDbContext.CtManufactures.Local
End If
End Sub
Public Class ShellViewModel
Inherits ViewModelBase
#Region "Fields"
Private _changePageCommand As ICommand
Private _currentPageViewModel As IPageViewModel
Private _pageViewModels As List(Of IPageViewModel)
#End Region
Public Sub New()
Dim DialogService As New ModalDialogService
' Add available pages
PageViewModels.Add(New ImportJobDataViewModel(DialogService))
PageViewModels.Add(New TestViewModel())
PageViewModels.Add(New ReverseBendUtilityViewModel(DialogService))
' Set starting page
CurrentPageViewModel = PageViewModels(0)
End Sub
#Region "Properties / Commands"
Public ReadOnly Property ChangePageCommand() As ICommand
Get
If _changePageCommand Is Nothing Then
_changePageCommand = New RelayCommand(Of IPageViewModel)(Sub(param) ChangeViewModel(param))
End If
Return _changePageCommand
End Get
End Property
Private Function IsViewPageModel(viewPageModel As IPageViewModel) As Boolean
If TypeOf (viewPageModel) Is IPageViewModel Then
Return True
Else
Return False
End If
End Function
Public ReadOnly Property PageViewModels() As List(Of IPageViewModel)
Get
If _pageViewModels Is Nothing Then
_pageViewModels = New List(Of IPageViewModel)()
End If
Return _pageViewModels
End Get
End Property
Public Property CurrentPageViewModel() As IPageViewModel
Get
Return _currentPageViewModel
End Get
Set(value As IPageViewModel)
If _currentPageViewModel IsNot value Then
_currentPageViewModel = value
RaisePropertyChanged(Function() CurrentPageViewModel)
End If
End Set
End Property
#End Region
#Region "Methods"
Private Sub ChangeViewModel(viewModel As IPageViewModel)
If Not PageViewModels.Contains(viewModel) Then
PageViewModels.Add(viewModel)
End If
CurrentPageViewModel = PageViewModels.FirstOrDefault(Function(vm) vm Is viewModel)
End Sub
#End Region
End Class
最佳答案
您可以在不真正触及数据库上下文的情况下解决此问题。这个想法是,即使 VM 留在内存中,您也只需要在 VM 的 View 处于事件状态时初始化模型实例。
Caliburn.Micro: Screens and Conductors 中有一个很好的解决方法,但它实际上并不特定于 mvvm 框架。
在最基本的情况下,正如 Rachel 在上面的评论中提到的,你扩展你的 IPageViewModel
包括处理 VM 的激活和停用逻辑的函数:激活逻辑在 VM 被激活时调用,停用逻辑在 VM 被停用时调用。
激活/停用的实际调用将在 IPageViewModels
的容器中进行。 , 例如:
Public Property CurrentPageViewModel() As IPageViewModel
Get
Return _currentPageViewModel
End Get
Set(value As IPageViewModel)
If _currentPageViewModel Is value Then
Return
End If
If _currentPageViewModel IsNot Nothing Then
_currentPageViewModel.Deactivate()
End If
_currentPageViewModel = value
If value IsNot Nothing Then
value.Activate()
End If
RaisePropertyChanged(Function() CurrentPageViewModel)
End Set
End Property
关于wpf - 将生成的 ADO.Net DbContext 放入 View-Models 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819598/
我刚刚读过“Injecting Custom Logic in ADO.NET Data Services”,我的下一个问题是,如何使[WebGet]方法显示在客户端代理类中?当然,我可以直接使用We
我需要学习 ADO.NET 来构建基于 MS Office 的应用程序。我在 MSDN 库中阅读了大量有关 ADO.NET 的内容,但对我来说,一切都显得相当困惑。 使用 ADO.NET 时必须了解哪
所以这是交易。在我们的数据库中,出于安全性和模块化的目的,我们将大部分读取(即选择语句)包装在表值函数中。所以我有一个定义一个或多个可选参数的 TVF。 我相信具有默认参数的 TVF 要求使用关键字
我需要通过 ADO.NET 创建一个临时表,执行一个 BulkCopy然后是 Merge在临时表和实际表之间的服务器上。 问题是使用纯 ADO.NET 创建动态临时表。 架构应该与现有表相同,但该表是
我开发了一个带有自定义数据库配置的产品。我将 ADO.NET 与 System.Data.Odbc.OdbcConnection 结合使用。为了在数据库之间做出一些区别,有一个简单的解决方案来检测连接
我有一些 friend 是“老派”VB6 数据库开发人员,我向他们介绍了 .NET 及其功能,特别是 ADO.NET。 在我们的谈话中,他们提出了为什么他们宁愿坚持使用 ADO 而不是转向 ADO.N
我有一个有 6 列的数据库表。主键是由 6 列中的 5 列组成的复合键 我正在尝试使用 SqlClient.SqlCommandBuilder.GetDeleteCommand删除该行。 但是我收到以
我已经编写了一个围绕 ADO.NET 的 DbProviderFactory 的包装器,我在我的应用程序中广泛使用它。我还编写了很多将 IDataReader 行映射到 POCO 的代码。然而,由于我
我知道这已经被问过了。 大多数答案都不相关。 谷歌,显示解决方案是在“数据流任务”中配置表达式并设置查询。 然而,在 ADO .NET 源代码中,当我尝试预览输出时,我不断收到 "Must decla
我的代码如下: var statement = "test_oracle.sql"; F = aqFile.OpenTextFile(statement, aqFile.faRead, aqF
可以从 MATLAB 调用 .NET,所以我想我会尝试使用 ADO.NET 连接到数据库。 我似乎遇到了一个阻塞问题 - 无论何时您尝试创建一个 Command 对象,它都会抛出一个错误。 你可以自己
在中发现的物体之间有什么类比? JDBC 以及在 中找到的那些ADO.Net ? 我知道 JDBC 和 ADO.Net 中的对象模型并不完全相同,但我认为可以在它们之间找到一些类比(以及值得说明的关键
我有一个在 DbProviderFactory 的 machine.config 中注册的 ADO.NET 托管数据提供程序 - 它可供 Analysis Services 使用,因此我知道它已正确注
我一直在阅读有关 TransactionScope 的内容,并对它与 ADO.Net 事务的互操作性有疑问。现在我们有一些数据访问方法,每个方法都调用存储过程并开始和提交自己的单独事务。简单明了,样板
是否可以在不借助 DataAdapter 的情况下在 ADO.NET 中实现多个存储过程调用的批处理(执行更新/删除)? 最佳答案 您可以尝试使用 System.Data.SqlClient.SqlC
是否可以获取 OleDbCommand 的文本?用它们的值替换所有参数?例如。在下面的代码中,我正在寻找一种获取查询文本的方法 SELECT * FROM my_table WHERE c1 = 'h
什么更快 - ADO.NET 或 ADO.NET Entity Framework ? 最佳答案 没有什么比 ADO.NET 数据读取器更快了。 Entity Framework 也在“地下室”中使用
我需要 .NET Core 上的 ODP.NET(适用于 .NET 的 Oracle 数据提供程序),但无论如何找不到使其工作。 当我引用 OracleConnection 或 OracleComma
我正在启动一个基于 ASP.NET 和 Windows 服务器的新项目。 该应用程序计划非常大,并且为大量客户端提供高频拉取和更新服务。更改数据。 我之前曾使用 Linq-To-Sql 或 Ado.N
有没有其他快速的方法来在 ADO.Net 中填充数据表而不使用 Data adaptor.Fill 方法? 最佳答案 是的,你可以。这是一个简短的例子: var results = new DataT
我是一名优秀的程序员,十分优秀!