草庐IT

c# - DTO 形状 : flat, 复杂/嵌套,或两者的混合

我有一个使用DDD方法(域驱动设计)的MVC2n层应用程序(DAL、域、服务、MVC网络),具有带存储库的域模型。我的服务层使用请求/响应模式,其中请求和响应对象包含DTO(数据传输对象)以将数据从一层编码到下一层,映射是通过AutoMapper的帮助完成的.我的问题是:DTO通常应该采用什么形状?它是否也可以具有嵌套/复杂DTO,或者它应该严格地是一个平面投影?或者可能是两者的混合体?另外,使用平面DTO与更复杂/嵌套的DTO的主要原因是什么?例如,假设我有一个如下域:publicclassEmployee{publicstringFirstName{get;set;}publics

c# 对象初始值设定项的复杂性。最佳实践

当对象初始化器出现在C#中时,我太兴奋了。MyClassa=newMyClass();a.Field1=Value1;a.Field2=Value2;可以改写得更短:MyClassa=newMyClass{Field1=Value1,Field2=Value2}对象初始化代码更明显,但是当属性数量达到十几个并且一些赋值处理可为空值时,很难调试“空引用错误”所在的位置。Studio将整个对象初始值设定项显示为错误点。现在我使用对象初始化器来直接赋值给无错误的属性。您如何使用对象初始值设定项进行复杂的赋值,或者根本不使用十几个赋值是一种不好的做法?提前致谢! 最

c# - Entity Framework Code First - 为什么我不能以这种方式更新复杂的属性?

我正在使用EntityFramework4.1(代码优先)开发一个小型示例项目。我的类(class)如下所示:publicclassContext:DbContext{publicIDbSetPeople{get;set;}publicIDbSetEmployeeTypes{get;set;}}publicclassPerson{[Key]publicintKey{get;set;}publicstringFirstName{get;set;}publicstringLastName{get;set;}virtualpublicEmployeeTypeEmployeeType{get;

c# - 为什么在 asp.net MVC Controller 中需要显式 Dispose() 方法?谁能解释它的复杂性? (特定于 asp.net)

我知道C#可以通过其垃圾收集器很好地管理资源。但既然它有那个,它到底是做什么用的,为什么需要它?谁能解释为什么在asp.netmvc中需要.Dispose()?另外,Dispose连接是什么意思?为什么需要它?任何人都知道为什么像db.Dispose()那样处理数据库连接很重要?这是与EF相关还是与SQLServer相关?我正在尝试了解其中的确切原因。protectedoverridevoidDispose(booldisposing){db.Dispose();base.Dispose(disposing);} 最佳答案 Disp

c# - 无法在 LINQ to Entities 查询中构造实体或复杂类型 ' '

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:TheentitycannotbeconstructedinaLINQtoEntitiesqueryvartasks=fromiindata.Incidentsjoinaindata.Accountsoni.CustomerIDequalsa.Acct_CIDselectnewTasks(){creator_id=a.ID,start_date=i.DateOpened,end_date=i.DateCLosed,product_code=i.ProductCode,install_type=i.Instal

c# - Entity Framework 复杂类型与创建新实体

我正在阅读EntityFramework4.0,我想知道为什么我应该创建一个复杂类型而不是一个新的实体(表)和它们之间的关系? 最佳答案 地址就是一个完美的例子。对地址使用复杂类型比处理新实体要容易得多。对于复杂类型,您不必处理主键。想一想访问一个地址有多少种常见类型的实体会有一个地址(业务单位、人员、地点)。想象一下填充许多人的地址并需要为每个人设置一个key。对于复杂类型,您只需访问它们类型的内部属性即可。这是示例的MSDN链接。http://msdn.microsoft.com/en-us/library/bb738613.a

c# - 我如何告诉数据注释验证器也验证复杂的子属性?

我可以在验证父对象时自动验证复杂的子对象并将结果包含在填充的ICollection中吗??如果我运行以下代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel.DataAnnotations;namespaceConsoleApplication1{publicclassPerson{[Required]publicstringName{get;set;}publicAddressAddress{get;set;}}publicclassAddress{[Required]publicstrin

c# - 我能否使用 Moq 来验证是否使用复杂参数中的特定值调用了模拟方法?

假设我正在模拟以下类:publicclassClassAParams{publicintRequestedId{get;set;}publicstringSomeValue{get;set;}}publicclassClassA{publicvoidExecuteAction(ClassAParamsexecuteParams){}}现在假设我有另一个类(我们称它为ClassB),我正在为其创建单元测试,我想确保当ClassB.Execute()被调用,ClassB调用ClassA.ExecuteAction()但我想确保它调用该方法的参数具有ClassAParams.Requeste

c# - 将多个复杂对象传递给 post/put Web API 方法

有人可以帮助我了解如何将多个对象从C#控制台应用程序传递到WebAPIController,如下所示吗?using(varhttpClient=newSystem.Net.Http.HttpClient()){httpClient.BaseAddress=newUri(ConfigurationManager.AppSettings["Url"]);httpClient.DefaultRequestHeaders.Accept.Clear();httpClient.DefaultRequestHeaders.Accept.Add(newMediaTypeWithQualityHeade

c# - 如何获取 Entity Framework 来更新复杂类型?

我正在使用EntityFramework(EF)从存储过程创建复杂类型。最近,存储过程发生了变化(添加了更多的返回值。我想更新映射到该存储过程的复杂类型。这可能吗?如果可以,怎么办?我目前每次删除我的函数导入和复杂类型存储过程更改,这很可能不是最佳方法。 最佳答案 我找到了另一种不删除复杂类型的方法。您可以更新您的复杂类型,VisualStudio将添加任何更改的列。方法如下:打开您的.edmx文件并转到模型浏览器。如果您的存储过程发生更改,请右键单击模型浏览器中的任何空白区域并选择从数据库更新模型,然后单击“完成”。这将刷新您的存