我偶然发现了以下两篇文章第一和第二篇,其中作者总结说ORM实体和域实体不应混淆.
我正好面对这个问题,因为我使用Code First方法使用EF 6.0进行编码.我使用POCO类作为EF中的实体以及我的域/业务对象.但我经常发现自己经常将属性定义为public或导航属性为virtual,因为EF Framework强迫我这样做.
我不知道该怎么采取这两篇文章的底线?我是否真的应该为实体框架创建一个CustomerEF类,为我的域创建一个CustomerD.然后创建一个使用CustomerD的存储库将它映射到CustomerEF做一些查询,然后将收到的CustomerEF映射回CustomerD.我认为EF就是将我的域实体映射到数据.
所以请给我一些建议.我是否忽略了EF能够为我提供的重要事项?或者这是EF无法完全解决的问题?在后一种情况下,管理这个问题的好方法是什么?
我编写了一个使用所有可用内核的程序Parallel.ForEach.ForEach包含~1000个对象的列表以及每个对象的计算需要一些时间(~10秒).在这种情况下,我设置了一个这样的计时器:
timer = new System.Timers.Timer();
timer.Elapsed += TimerHandler;
timer.Interval = 15000;
timer.Enabled = true;
private void TimerHandler(object source, ElapsedEventArgs e)
{
Console.WriteLine(DateTime.Now + ": Timer fired");
}
Run Code Online (Sandbox Code Playgroud)
目前,该TimerHandler方法是一个存根,以确保问题不是由此方法引起的.
我的期望是该TimerHandler方法将每隔约15秒执行一次.但是,两次调用此方法之间的时间甚至达到40秒,因此25秒太多.通过使用new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount -1 }该Parallel.ForEach方法,这不会发生,并且可以看到预期的15秒间隔.
我是否打算确保每个活动计时器始终有一个核心可用?似乎有点奇怪,因为"保留"可能是我计算的宝贵资源.
编辑:如Yuval所示,通过ThreadPool.SetMinThreads解决问题设置池中固定的最小线程数.我也试过new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }(所以没有-1初始问题)这个Parallel.ForEach方法,这也解决了问题.但是,我没有很好的解释为什么这些修改解决了这个问题.也许有很多线程被创建,计时器线程在"很长"的时间内"丢失",直到再次执行.
我正在使用Visual Studio Online和Visual Studio 2013提供的TFS服务器。我已经将DefaultCollection映射到了C:\Users\xy\Source\TFS,并将第一个Team Project 映射TP1到了C:\Users\xy\Source\TFS\TP1。
现在,我有第二个团队项目TP2,该项目将自动映射到C:\Users\xy\Source\TFS\TP2。是否可以将路径更改为TP2完全不同的文件夹?
我试图创建一个记忆游戏,同时严格遵循MVVM模式来学习如何使用它。现在,我在运行时创建视图时遇到了问题。
我创建了以下项目结构:
依赖关系如下:StartApplication项目-> View项目-> ViewModel项目-> Model项目
单击MainWindowView上的按钮后,MainWindowViewModel中该按钮的ICommand函数将从Model项目中加载MemoryCardModel30实例。对于MemoryCardModel30实例中的每个卡,将创建一个CardViewModel。
现在,我面临的问题是:如何创建CardView实例,如何将其DataContext链接到CardViewModels,以及如何在MainWindowView上安排/分配CardViews?ViewModel项目无法创建View,因为它对View项目没有依赖关系(将创建循环依赖关系并破坏模式)。遵循MVVM模式时如何解决此问题?
PS:CardView的位置必须精确地按x和y pos定位。这将需要一些复杂的计算,这些计算应通过相应的CardViewModel进行。因此,我认为某些基本布局(例如网格)将不够。