草庐IT

c# - 使用 DTO 和 POCO 对象时处理导航属性的最佳做法是什么?

我正在努力研究领域驱动开发。我想确保我有一个良好的基础和理解,所以如果在这里避免使用AutoMapper或类似的建议,那就太好了。我的架构目前涉及以下内容:WCF服务负责持久性(使用EntityFramework)和服务器端验证。它将POCO转换为DTO,并将DTO传输给客户端。客户端接收DTO并将其转换为POCO。转换POCO和DTO的类在服务和客户端之间共享。POCO的实现IValidatableObject和INotifyPropertyChanged并被服务器和客户端使用,但它们不用于数据传输。DTO是,它们只是不包含任何行为的属性(property)包。(1)问题#1。这个架

c# - DTO 加上 UnitOfWork 模式是为 Web 应用程序设计 DAL 的好方法吗?

我正在使用EntityFramework实现DAL。在我们的应用程序中,我们有三层(DAL、业务层和表示层)。这是一个网络应用程序。当我们开始实现DAL时,我们的团队认为DAL应该有一些类,其方法接收业务层服务提供的ObjectContext并对其进行操作。该决定背后的基本原理是不同的ObjectContext看到不同的数据库状态,因此某些操作可能会由于外键匹配问题和其他不一致问题而被拒绝。我们注意到,从服务层生成和传播对象上下文会在层之间产生高耦合。因此我们决定使用Automapper映射的DTO(不是非托管实体或自跟踪实体争论高耦合,将实体暴露给上层和低效率)和UnitOfWork

c# - 使用 AutoMapper 将 DataTable 映射到对象 (DTO)

我正在尝试使用AutoMappersDynamicMap功能将DataTable映射到对象(DTO)。DataTabledt;dt=newdalAllInvestors().InvestorNameSearch(investorNameSearch);//LookatDynamicMap-UrgentListapiObject=AutoMapper.Mapper.DynamicMap>(dt.CreateDataReader());returnapiObject;publicclassdtoAPISimpleInvestor{publicintFirmID{get;set;}publi

c# - 使用 DTO 而不是在公共(public)程序集中共享对实体的引用是否有好处?

我正试图为一个让我抓狂了很长时间的问题找到一个明确的最终答案。通常表示BLL应包含业务逻辑和业务对象(BO),并具有对DAL的引用。另一方面,DAL不能引用BLL,因此它不能接受BO作为参数,或返回BO作为返回值。这个问题最传统的答案是:a)接受简单参数,返回(最好是Typed)DataSets和DataTables返回数据:命名空间DAL{公共(public)课联系方式公共(public)数据表GetContacts(){...}公共(public)UpdateContacts(DataTable联系人){...}b)第二个最推荐的解决方案是定义临时的、可序列化的数据传输对象(DTO

c# - DTO 和 Entity 是否都应该有输入验证

我有一个WCF层,我的领域模型在这个WCF层后面。我正在使用Nhibernate作为ORM工具,我所有的业务逻辑/数据访问等都将在这个WCF层之后。我正在向我的客户公开DTO。我有以下问题1)我应该创建DTO吗?将实体直接暴露给wcf客户端有什么坏处,因为我的实体也会有业务逻辑方法,这样做我将不得不用我认为不好的WCF属性破坏我的实体对象?2)如果我公开DTO,我是否应该验证DTO以及实体。如果我只验证DTO,那么我不会为我的Enitity对象提供任何输入验证。这样可以吗?3)我是否应该考虑使用模式验证在应用程序服务层(WCF层)中验证DTO?或者我应该使用文章[博客]中给出的IVal

c# - 将 Entity Framework 模型导航属性转换为 DTO

我目前正在从事一个n层网络项目。在研究了数据传输对象及其好处之后,我们决定试一试这种模式。我们的ASP.NETMVC网站无法直接访问EFDbContext,而是使用DTO发送和接收实体数据。将有一个服务/映射层,将在DTO和实体模型之间进行转换。我的问题是,将实体模型导航属性转换为其DTO的最佳方式是什么?下面是项目中实体模型及其DTO的示例:实体模型:publicclassPayment{publicintID{get;set;}publicDateTime?PaidOn{get;set;}publicdecimalAmount{get;set;}publicstringRefere

c# - 在 3 层架构中使用 DTO

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我使用的是简单的3层架构。在这里,我使用DTO类在UI、BL和DL之间进行通信。那么层与层之间有没有更好的通信方式呢?或者这是正确的方法?

c# - 如何使用 LINQ to SQL 创建通用数据访问对象 (DAO) CRUD 方法

我是LINQtoSQL的新手,正在尝试为基本的创建、读取、更新和销毁(CRUD)方法创建通用数据访问对象(DAO),以便我可以重用代码。我成功地创建了一个通用方法,该方法将使用下面的代码删除任何实体,但我想知道是否有人知道如何创建一个通用方法,该方法将通过所有表中存在的公共(public)Id字段选择任何实体。//////GenericmethodthatdeletesanentityofanytypeusingLINQ/////////boolindicatingwhetherornotoperationwassuccessfulpublicbooldeleteEntity(Obje

c# - Entity Framework 和DTO

我打算使用EF(POCO)生成的实体向客户端发送数据而不是创建DTO?这是一个好习惯吗?基本上,我的EDMX文件在我的DAL层上。因此UI将可以直接访问我的DAL。谢谢。 最佳答案 这取决于客户端与您的对象域的距离。如果它是您的客户端,那么也许-事实上这几乎就是ADO.NET数据服务(等)的工作方式-直接公开您的模型。但是,如果客户端是任何其他,我建议使用专用的DTO。事实上,无论如何我都会建议它;p否则,它会变得有些复杂:控制序列化细节(什么成员?什么名字?当我们版本化它时会发生什么?)处理关系属性(它有一个Orders成员...

c# - 质疑使用具有 Restful 服务的 DTO 并从更新中提取行为

在DDD领域,我喜欢避免使用getter和setter来完全封装组件的想法,因此唯一允许的交互是通过行为构建的交互。将此与事件溯源相结合,我可以获得有关组件已执行的操作以及何时执行的详细历史记录。我一直在考虑的一件事是,当我想要创建(例如)底层服务的Restful网关时。出于示例的目的,假设我有一个具有以下方法的Task对象,ChangeDueDate(DateTime日期)ChangeDescription(字符串描述)AddTags(paramsstring[]tags)完成()现在很明显我将在这个对象中有实例变量来控制状态和事件,当相关方法被调用时它们将被触发。回到REST服务,