我在我的WPF应用程序中使用MVVM Light工具包.我想知道从现有窗口打开新窗口的最佳方法是什么.我有这个MainViewModel,负责MainWindow我的申请.现在,MainView按下按钮,我想打开它上面的第二个窗口.我有RelayCommmand绑定到Button的Command.在RelayCommand方法中,我可以创建一个新的窗口对象,只需调用Show(),如下所示:
var view2 = new view2()
view2.Show()
Run Code Online (Sandbox Code Playgroud)
但我不认为ViewModel应该负责创建新view2对象.我已经阅读了这篇文章WPF MVVM从VIEW MODEL获取Parent,其中Bugnion建议将消息传递给view1from viewmodel1,然后view1应该创建新的view2.但是我不确定他将这条消息传递给他的意思是view1什么?如何view1处理消息?在它的代码背后或什么?
此致,Nabeel
我有一个要求加载一个名为Node的复杂对象...它不是那么复杂...它看起来如下: -
一个节点有一个参考的EntityType具有一对多与物业这反过来有一对多与PorpertyListValue
public class Node
{
public virtual int Id
{
get;
set;
}
public virtual string Name
{
get;
set;
}
public virtual EntityType Etype
{
get;
set;
}
}
public class EntityType
{
public virtual int Id
{
get;
set;
}
public virtual string Name
{
get;
set;
}
public virtual IList<Property> Properties
{
get;
protected set;
}
public EntityType()
{
Properties = new …Run Code Online (Sandbox Code Playgroud) 我在不使用ORM的.NET C#应用程序中使用存储库模式.但是,我遇到的问题是如何填充实体的一对多列表属性.例如,如果客户有一个订单列表,即如果Customer类有一个名为Orders的List属性,而我的存储库有一个名为GetCustomerById的方法,那么?
这也引发了诸如变更跟踪,删除等功能的问题?所以我认为最终结果是我可以在没有ORM的情况下进行DDD吗?
但是现在我只对我的域实体中的延迟加载List属性感兴趣?任何的想法?
纳比勒
我假设对于没有在域驱动设计中使用ORM的人来说这是一个非常常见的问题?任何的想法?
我最近开始使用NuGet,我想知道是否有一个我可以安装的asp.net mvc 3软件包,所以我不必通过lib文件夹引用aspnet mvc3程序集,就像传统方式一样,所有引用都设置为CopyLocal = true.目前我的lib文件夹中有以下程序集:
Microsoft.Web.Infrastructure.dll System.Web.Helpers.dll System.Web.Mvc.dll System.Web.Razor.dll System.Web.WebPages.Administration.dll System.Web.WebPages.Deployment.dll System.Web.WebPages.dll System.Web.WebPages.Razor.dll
任何的想法?
我有一个WCF服务方法,返回大小为2 mb的大byte []数组.但是,当我从WcfTestClient运行该方法时,我得到以下异常.
System.InsufficientMemoryException
Failed to allocate a managed memory buffer of 536870912 bytes. The amount of available memory may be low.
Run Code Online (Sandbox Code Playgroud)
我在谷歌搜索,人们似乎有这个问题,但我很难找到任何解决方案和实际原因,为什么它试图创建这样一个巨大的缓冲区?
以下是我的配置设置.我设置了maxItemsInObjectGraph ="2147483647",否则它会抛出异常.其余的很简单,我猜.
服务器
<system.serviceModel>
<services>
<service behaviorConfiguration="Wcf.ServiceBehavior"
name="Wcf.WcfService">
<endpoint address="" binding="wsHttpBinding" contract="Wcf.IWcfService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Wcf.ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
<diagnostics>
<messageLogging maxMessagesToLog="30000"
logEntireMessage="true"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true">
</messageLogging>
</diagnostics>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
WcfTestClient Config这是使用WcfTestClient加载的默认配置文件
<?xml version="1.0" encoding="utf-8"?> …Run Code Online (Sandbox Code Playgroud) 我有一个在Windows Server 2003上运行的CruiseControl .NET构建服务器,我正在尝试使用msbuild构建和发布我的ClickOnce应用程序.
除非我启用ClickOnce应用程序的引导程序,否则一切正常.发生这种情况时,我在DeploymentGenerateBootstrapper目标中收到以下错误:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (3939,9):
error MSB3147:
Could not find required file 'setup.bin' in 'E:\Projects\src\TestProject\Engine'.
Run Code Online (Sandbox Code Playgroud)
.NET Framework 3.5 SP1和4以及最新的Windows SDK都安装在服务器上,但C:\ Program Files\Microsoft SDKs\Windows\versionNo \中的引导程序文件夹不存在.我试着从我的工作站机器上复制文件而没有运气.
我不想在服务器上安装Visual Studio,只安装必要的SDK.
我也尝试从我的机器上复制bootsrapper文件夹
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper
Run Code Online (Sandbox Code Playgroud)
建立服务器,但没有运气.
有任何想法吗?
我有一个抽象的基类并继承了poco实体.我使用表每子类继承与流畅的nhibernate 1.1自动化.
类继承如下所示
节点(抽象类)放置:节点资产:节点
Node类基本上是树结构.
public abstract class Node
{
public virtual int Id
{
get;
set;
}
public virtual Node ParentNode
{
get;
set;
}
public virtual ICollection<Node> ChildNodes
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,当我从数据库获取Asset的对象并执行objAsset.ParentNode时,我可以将ParentNode强制转换为Asset或Place,但是如果我执行类似objAsset.ParentNode.ParentNode.ParentNode的操作,那么ParentNode将显示为类型" {Castle.Proxies.NodeProxy}"我无法将其投射到Place或Asset.
我知道在我的情况下,最终结果应该是Place类型,因为记录存在于Place表的数据库中但由于某种原因NHibernate不能将它延迟加载到实际的派生类型,它只能转换为基类Node .
任何的想法?
等待Nabeel
nhibernate lazy-loading nhibernate-mapping fluent-nhibernate
我最近开始使用automapper,到目前为止我的工作正常.我一直在将域对象映射到相应的dtos,默认情况下,所有源属性都会映射到其匹配的目标属性.我一直在使用如下代码:
Mapper.CreateMap<Node, NodeDto>();
var nodeDto = Mapper.Map<Node, NodeDto>( node );
Run Code Online (Sandbox Code Playgroud)
现在我遇到了一种情况,我只想映射源对象的一些属性.源对象中有一些集合属性,我不希望将它们映射到匹配的目标属性.有没有办法实现这一目标?
我正在使用MVC3剃须刀.我有一个场景,我必须在同一父视图上多次使用局部视图.我遇到的问题是,当父视图被渲染时,它会在这些部分视图中生成相同的名称和输入控件的ID.由于我的部分视图被绑定到不同的模型,当视图回发到"保存"时它崩溃了.任何想法我如何使控件ID /名称唯一,可能有些人如何前缀?
等待
纳比勒
我有一个场景,我想忽略基类中定义的类的一些属性.
我有这样的初始映射
Mapper.CreateMap<Node, NodeDto>()
.Include<Place, PlaceDto>()
.Include<Asset, AssetDto>();
Run Code Online (Sandbox Code Playgroud)
然后我更像这样定制它来忽略基类NodeDto中定义的一个属性
Mapper.CreateMap<Node, NodeDto>()
.ForMember(dest => dest.ChildNodes, opt => opt.Ignore());
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试映射Place Place to PlaceDto或Asset to AssetDto时,不会忽略ChildNodes属性.所以我最终做了这样的事情
Mapper.CreateMap<Node, NodeDto>()
.ForMember(dest => dest.ChildNodes, opt => opt.Ignore());
Mapper.CreateMap<Place, PlaceDto>()
.ForMember(dest => dest.ChildNodes, opt => opt.Ignore());
Mapper.CreateMap<Asset, AssetDto>()
.ForMember(dest => dest.ChildNodes, opt => opt.Ignore());
Run Code Online (Sandbox Code Playgroud)
由于我有很多NodeDto的子类,上面的过程很麻烦,我想知道是否有更好的方法?
谢谢Nabeel
automapper ×2
nhibernate ×2
asp.net-mvc ×1
automapping ×1
c# ×1
clickonce ×1
lazy-loading ×1
msbuild ×1
mvvm ×1
mvvm-light ×1
nuget ×1
orm ×1
wcf ×1
winapi ×1
wpf ×1