小编cbp*_*cbp的帖子

避免贫血领域模型 - 一个真实的例子

我试图了解贫血领域模型以及为什么它们被认为是一种反模式.

这是一个真实世界的例子.

我有一个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)

anemic-domain-model

75
推荐指数
3
解决办法
8553
查看次数

Visual Studio忘记了窗口设置并弄得一团糟

我有这个问题,我打开Visual Studio,内部窗口遍布各处.他们都没有停靠; 一些应该是可见的已经变得不可见,反之亦然.然后,我必须花费多年时间让窗户回到我喜欢的地方.

它似乎只是出现了一些解决方案而且最近才出现.

对于我的生活,我无法解决问题.还有其他人经历过这个吗?

windows dock visual-studio

64
推荐指数
3
解决办法
2万
查看次数

旧的DLL文件一直在使用

我有一个看似随机的问题,我的项目将使用不再存在的旧版DLL文件运行.有时会使用DLL文件的真实版本,有时会使用古老版本的DLL文件.谁知道Visual Studio从哪里获取这个DLL文件 - 它已经过时了!

我知道它正在使用旧的DLL文件,因为当应用程序运行时,我开始变得奇怪的'TypeLoadExceptions',抱怨方法不存在或没有实现.

以下操作有时会有所帮助,有时不会:

  • 重新启动Visual Studio
  • 重新启动计算机
  • 清洁和重建解决方案
  • 删除\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files中的所有内容
  • 在\ Documents and Settings\username\Local Settings\Temp中搜索和删除DLL文件的实例

有时我执行上述所有步骤,它仍然使用DLL文件的旧副本.它隐藏在哪里?!

使用MSBuild的TeamCity服务器上存在同样的问题.当TeamCity尝试运行单元测试时,它使用旧的DLL文件.

现在,我知道我可以在web.config文件中使用程序集重定向,但DLL文件的版本号没有改变(我不打算更新它,所以它只停留在版本1).我不想只是为了解决这个问题而开始对DLL文件进行版本控制.我想知道我需要清除哪些特定的缓存,以便我可以继续开发.

dll

56
推荐指数
3
解决办法
4万
查看次数

如何从jQuery集"弹出"或"转移"

在Javascript中,数组应该有方法popshift.

但是,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函数的最简单方法是什么?

jquery

43
推荐指数
3
解决办法
3万
查看次数

ActionFilterAttributes是否跨线程重用?这是如何运作的?

我一直在使用以下代码进行一些测试,以尝试和锻炼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可以跨线程重用,但是根据为公共属性指定的常量创建新实例.我对么?

我在哪里可以找到相关信息?

asp.net-mvc

40
推荐指数
1
解决办法
9397
查看次数

停止Visual Studio 2010在设计模式下打开XSD

Visual Studio 2010现在默认以设计模式打开XSD文件.我找不到禁用此选项的任何选项.有没有办法在文本模式下始终打开XSD文件?

xsd visual-studio-2010

37
推荐指数
1
解决办法
6098
查看次数

找出我的应用程序当前在Visual Studio的调试模式下运行的代码行

当我使用Visual Studio在调试模式下运行应用程序时,有没有办法可以找出当前正在处理的代码行?我的意思是,有一种工具有点像设置断点,但你不必设置断点 - 你可以在任何时间点找出正在执行的代码行?

原因是,有时您可能想要在应用中调试间歇性挂起.如果您在调试模式下运行,并且您的应用程序挂起,那么立即找出它上次处理的代码行是有用的,而无需通过设置断点或跟踪调用来提前计划.

debugging visual-studio

37
推荐指数
1
解决办法
8535
查看次数

在TortoiseSVN中,为什么我不能显示超过6周左右的日志?

如果我右键单击我的工作文件夹,然后选择TortoiseSVN-> Show Log,它会显示一个非常有用的存储库更改日志.但它仅显示过去6周左右.如果我尝试更改日期范围,它将不会让我 - 点击日历中的日期不会做任何事情,如果我编辑日期文本框,它只会将其更改回来.

svn tortoisesvn

34
推荐指数
1
解决办法
9351
查看次数

我应该摆脱Guid列上的聚簇索引

我正在研究一个通常使用GUID作为主键的数据库.

默认情况下,SQL Server在主键列上放置聚簇索引.我理解这对于GUID列来说是一个愚蠢的想法,并且非聚集索引更好.

你怎么想 - 我应该摆脱所有聚集索引并用非聚集索引替换它们吗?

为什么SQL的性能调优器不会提供此建议?

sql-server guid clustered-index

33
推荐指数
4
解决办法
2万
查看次数

如何使用HttpModule记录请求输入流,然后重置InputStream位置

我正在尝试使用像这样的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 inputstream httpmodule

31
推荐指数
2
解决办法
2万
查看次数