我试图了解贫血领域模型以及为什么它们被认为是一种反模式.
这是一个真实世界的例子.
我有一个Employee类,它有很多属性 - 名称,性别,用户名等
public class Employee
{
public string Name { get; set; }
public string Gender { get; set; }
public string Username { get; set; }
// Etc.. mostly getters and setters
}
Run Code Online (Sandbox Code Playgroud)
接下来,我们有一个系统,涉及在销售人员之间平均拨打来电和网站查询(称为"潜在客户").这个系统非常复杂,因为它涉及循环查询,检查假期,员工偏好等.因此,该系统目前分为服务:EmployeeLeadRotationService.
public class EmployeeLeadRotationService : IEmployeeLeadRotationService
{
private IEmployeeRepository _employeeRepository;
// ...plus lots of other injected repositories and services
public void SelectEmployee(ILead lead)
{
// Etc. lots of complex logic
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我们的网站查询表格的背面,我们有这样的代码:
public void SubmitForm()
{
var lead = CreateLeadFromFormInput();
var selectedEmployee …Run Code Online (Sandbox Code Playgroud) 我有这个问题,我打开Visual Studio,内部窗口遍布各处.他们都没有停靠; 一些应该是可见的已经变得不可见,反之亦然.然后,我必须花费多年时间让窗户回到我喜欢的地方.
它似乎只是出现了一些解决方案而且最近才出现.
对于我的生活,我无法解决问题.还有其他人经历过这个吗?
我有一个看似随机的问题,我的项目将使用不再存在的旧版DLL文件运行.有时会使用DLL文件的真实版本,有时会使用古老版本的DLL文件.谁知道Visual Studio从哪里获取这个DLL文件 - 它已经过时了!
我知道它正在使用旧的DLL文件,因为当应用程序运行时,我开始变得奇怪的'TypeLoadExceptions',抱怨方法不存在或没有实现.
以下操作有时会有所帮助,有时不会:
有时我执行上述所有步骤,它仍然使用DLL文件的旧副本.它隐藏在哪里?!
使用MSBuild的TeamCity服务器上存在同样的问题.当TeamCity尝试运行单元测试时,它使用旧的DLL文件.
现在,我知道我可以在web.config文件中使用程序集重定向,但DLL文件的版本号没有改变(我不打算更新它,所以它只停留在版本1).我不想只是为了解决这个问题而开始对DLL文件进行版本控制.我想知道我需要清除哪些特定的缓存,以便我可以继续开发.
在Javascript中,数组应该有方法pop和shift.
但是,JQuery对象似乎缺少这些方法:
$('div').shift(); // Error, shift is undefined
$('div').pop(); // Error, pop is undefined
$('div').splice(); // Splice is OK actually
Run Code Online (Sandbox Code Playgroud)
我想知道为什么缺少这些函数 - 毕竟,jquery对象只是一个数组.
在jquery对象上执行pop和shift函数的最简单方法是什么?
我一直在使用以下代码进行一些测试,以尝试和锻炼ActionFilterAttributes的工作方式:
public class TestAttribute : ActionFilterAttribute
{
private string _privateValue;
public string PublicValue { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
_privateValue = DateTime.Now.ToString();
base.OnActionExecuting(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
当我在两个并行线程上运行上面的代码时,_privateValue字段会混淆.但是,PublicValue属性不会混淆.
在我看来,ActionFilterAttributes可以跨线程重用,但是根据为公共属性指定的常量创建新实例.我对么?
我在哪里可以找到相关信息?
Visual Studio 2010现在默认以设计模式打开XSD文件.我找不到禁用此选项的任何选项.有没有办法在文本模式下始终打开XSD文件?
当我使用Visual Studio在调试模式下运行应用程序时,有没有办法可以找出当前正在处理的代码行?我的意思是,有一种工具有点像设置断点,但你不必设置断点 - 你可以在任何时间点找出正在执行的代码行?
原因是,有时您可能想要在应用中调试间歇性挂起.如果您在调试模式下运行,并且您的应用程序挂起,那么立即找出它上次处理的代码行是有用的,而无需通过设置断点或跟踪调用来提前计划.
如果我右键单击我的工作文件夹,然后选择TortoiseSVN-> Show Log,它会显示一个非常有用的存储库更改日志.但它仅显示过去6周左右.如果我尝试更改日期范围,它将不会让我 - 点击日历中的日期不会做任何事情,如果我编辑日期文本框,它只会将其更改回来.
我正在研究一个通常使用GUID作为主键的数据库.
默认情况下,SQL Server在主键列上放置聚簇索引.我理解这对于GUID列来说是一个愚蠢的想法,并且非聚集索引更好.
你怎么想 - 我应该摆脱所有聚集索引并用非聚集索引替换它们吗?
为什么SQL的性能调优器不会提供此建议?
我正在尝试使用像这样的IHttpModule记录http请求的内容:
public class LoggingModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += ContextBeginRequest;
}
private void ContextBeginRequest(object sender, EventArgs e)
{
var request = ((HttpApplication)sender).Request;
string content;
using (var reader = new StreamReader(request.InputStream))
{
content = reader.ReadToEnd();
}
LogRequest(content)
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,在将输入流读取到结尾后,InputStream似乎已消失或更有可能,光标位于流的末尾.
我尝试过request.InputStream.Position = 0;,request.InputStream.Seek(0, SeekOrigin.Begin);但都没有工作.
.net ×1
asp.net-mvc ×1
debugging ×1
dll ×1
dock ×1
guid ×1
httpmodule ×1
inputstream ×1
jquery ×1
sql-server ×1
svn ×1
tortoisesvn ×1
windows ×1
xsd ×1