我试图使用LLBLGen在AutoMapper实体和DTO之间创建映射。
我的DTO看起来如下:
// Parent
public int Id { get; set; }
public List<Child> Children{ get; set; } // One to Many
// Child
public int Id { get; set; }
public int Parent { get; set; } // Foreign key to parent Id
ParentEntity包含一个与DTO列表名称相同的ChildCollection和一个Id (包含需要
好的,我很难从一个模型转换为一个dto模型,反之亦然,这个模型是有效的,但是当试图映射"AutoMapper.AutoMapperMappingException‘发生在AutoMapper.dll“时
下面是模型类
public class Category
{
public Guid CategoryId { get; set; }
public string CategoryName { get; set; }
public virtual ICollection<Post> Posts { get; set
public class BaseEntity
{
Public Int Id{get;set;}
Public DateTime CreateTime{get;set;}
Public DateTime UpdateTime{get;set;}
}
public class EntityA:BaseEntity
{
Public string PropA{get;set;}
}
Public class BaseEntityDto
{
Public Int Id{get;set;}
}
public class Entity
我有以下几种型号:
public class A_DTO
{
[Key]
public string Id { get; set; }
**public virtual B_DTO B { get; set; }**
public virtual List<B_DTO> Bs { get; set; }
}
public class B_DTO
{
[Key]
public string Id { get; set; }
public string AId { get; set; }
public string
我对从相关域模型返回对象有问题。来自其他模型的对象返回null。
基本上,我试图实现的是返回一个DTO,该DTO具有我希望从相关域模型中得到的字段,而不是将每个字段直接从域模型传递到json。
请看下面的代码,谁能告诉我。
## CourseDomainModels.cs ##
public class CourseDomainModel : IObjectWithState
{
public int Id { get; set; }
public string Name { get; set; }
public Double Duration { get
如果源集合属性为null,是否有任何方法使AutoMapper.Collection跳过集合的映射?
在我的示例中,客户端可能希望向API发出信号,表示不需要更新给定的集合。这样做的一种逻辑方法是在从客户端发送的dto中将集合属性设置为null。
基本上:
如果源集合属性为null,则:根本不碰目标集合,而是保持原样。如果源集合不为空,则不要清除:执行集合映射。如果源集合为空,这意味着清除目标集合。
在AutoMapper.Collection中有实现这一目标的方法吗?我要找的是:
// Sample Classes
public class Entity
{
public IColl
我有以下忽略Id字段的简单类和映射。
我注意到,当我从Eto/Dto映射到实体时,.Ignore()不工作,我也不知道其背后的原因。
我正在使用最新的ABP 4.4。
public class Country : Entity<string>
{
public Country() {}
public Country(string id) { Id = id; }
}
public class CountryDto : EntityDto<string> { }
CreateMap<Country, CountryDto>().Ignore
我使用AutoMapper从IDataReader映射到一个简单的DTO。
当我使用ForMember时,我能够映射这些属性,但当我使用ConstructUsing/ConvertUsing时,则不能映射这些属性。在本例中,我的所有NUnit测试都失败了,因为AutoMapper返回具有空属性的DTO。有趣的是,这种行为并不发生在MSTest中:当在MSTest下运行测试时,映射可以工作。
下面是代码:
public class Dto
{
public string Name { get; set; }
public string Value { get; set; }
}
这可以在NUni
我试图用我的DTO对象映射嵌套列表,但是它不起作用。这是我试过的。一切都返回为空。我得到的错误是:类型'AutoMapper.AutoMapperMappingException‘的异常发生在AutoMapper.dll中,但在用户代码中没有处理
public class ordersview_Dto
{
public int orderID { get; set; }
public string orderNumber { get; set; }
public float? orderTotal { get; set; }
public string
我正在尝试将DTO对象映射到工厂类中的entity对象。DTO的所有字段值都是直接的,而entity的字段由Name和Value组成。
经过一些调试,我发现Automapper实例化了每个实体字段,而不是使用现有的实体字段。因此,最后一次测试失败。
[TestFixture]
class RecursiveMappingTest
{
public class SourceInfo
{
public string Info1 = "info1";
public string Info2 = "info1";
为什么Automapper不使用SourceMember属性映射到雇员?如果我将名称与名称相匹配,它就会工作:
不管用:
是否有效:
using AutoMapper;
using AutoMapper.Configuration.Annotations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AutoMapperConsole1
{
[AutoMap(typeof(P
我想了解一下Automapper到底是如何工作的。在我使用所谓的ViewModels来发送业务需要从一个或多个数据库表中提取的信息之前,我知道基本的想法。现在,我正在开发一个使用Automapper的遗留项目,也许它提供的不仅仅是这些,但在给定的时刻,我希望取消(能够)将域对象映射到DTO对象,反之亦然,我不确定哪一种方法是正确的,因为我无法这样做。
这是我为测试Automapper的一些基本功能而制作的控制台项目的一个简单示例
其中,DTO_User.cs类用于向前端发送数据。看起来是这样的:
public class DTO_User
{
public int ID {
我的DTO(为演示目的简化):
项(映射到我的ViewModel的DTO ):
public class Item {
public Item() { }
public virtual Guid ID { get; set; }
public virtual ItemType ItemType { get; set; }
public virtual string Title { get; set; }
}
ItemType (由Item类引用):
public class ItemType {
public ItemType() { }
pub
我有两个具有精确属性的对象(类)。说:
class class1
{
public string prop1{get;set;}
public string prop2{get;set;}
}
class class2
{
public string prop1{get;set;}
public string prop2{get;set;}
}
我想用反射来映射这些类,我已经使用了,它不适合我的情况,因为我在对象中有对象.
在使用反射时,我需要传递属性名,我不想一个一个地这样做。
PropertyInfo propinfo = listToReturn.GetType
标题可能不是那么清楚,我会试着用一个例子来解释:
我用一个自定义的DTO映射器替换了AutoMapper,同时需要这两个映射器都工作。如果有一个自定义实现使用它,则回退到AutoMapper。
自定义映射器如下所示:
public static class CustomMapper
{
public static Entity1DTO Map(Entity1 source){
... some mapping code ...
}
public static Entity2DTO Map(Entity2 source){
... som
用subDto实现dto自动化
class productsDTO
{
public int id;
public AddressDTO DeliveryAddress;
}
Class productsViewModel
{
public int id;
public AddressViewModel DeliveryAddress;
}
在这里,我有一节dto课。我只想自动将dTo类映射到视图模型中。在DTO类中,AddressDTo必须在productsViewModel中自动映射AddressViewModel。
如果有人有解决办法,只需张贴
v
我想使用AutoMapper将DTO映射到模型。但是我的项目包含一些基本类型的默认值的自定义规则,比如字符串空值是"_",默认的int值是-1,日期时间字段必须是整数,比如19990221等等。
在我的测试中,我有一个外部DTO,它的字符串值为空。但我的内部系统模型有一个“空字符串必须表示为"_”字符串“规则(这很糟糕,但这是一个遗留的设计决策)。
型号:
public class OuterDTO
{
public string TestString { get; set; }
}
public class InnerModel
{
public s
我已经定义了到/来自我的DTO对象的映射,其中一个的属性与另一个匹配的属性非常匹配,只不过DTO对象有定义为ISet的集合,而非DTO对象的集合具有定义为HashSet的集合。我注意到了来自DTO ->非DTO的显着性能命中映射,而不是另一种方式。
AutoMapper似乎很难从具体的类中转换到接口,我想知道在映射或配置中是否遗漏了一些更明确的东西。这个范例存在于我们的代码库中,但是对于我所讨论的对象,我可以在大约8秒内从 DTO映射2k对象,并且可以在大约.1秒内将完全相同的对象映射到DTO 。
class ExampleDTO
{
public int Id;
pub
我使用EF和AutoMapper与Azure表存储仿真。
我有两种类型,片段(可序列化的DTO)和FragmentEntity (EF持久化DO)。我使用AutoMapper将DTO映射到DTO,以便在PUT调用上持久化,在GET调用时则使用DTO。
问题是我对EF和AutoMapper都缺乏经验。我已经将FragmentEntity类(根据我可以找到的文档)配置为在数据库中为片段生成Id (参见下面)。
实体ID定义:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int? Id { get; se
我使用AutoMapper来映射类。我正在努力学习Automapper语法。我有域类:
public class Club
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime OpenDate { get; set; }
public IEnumerable<Team> Teams { get; set; }
}
pu
此处的AutoMapper表达式翻译示例不起作用。
我已经在控制台应用程序(.net和.Net- AutoMapper )中复制并粘贴了来自核心站点的示例(为了使示例尽可能简单),并添加了一些我自己的代码来检查该站点的示例。但它并没有像我预期的那样工作。它抛出异常: System.ArgumentException:‘无法绑定到目标方法,因为它的签名或安全透明度与委托类型的签名或安全透明度不兼容。’
在调试器中,我看到自动映射程序不会将路径更改为属性,这就是问题所在。
看起来automapper实际上不能翻译表达式,或者我做错了。
public class OrderLine
{
pu
public class Item
{
public string Name { get; set; }
public virtual ICollection<Stock> Stocks { get; set; }
public virtual ICollection<Price> Prices { get; set; }
-- remove some code for brevity --
}
public Stock
{
public int Id { get; set; }
public int ItemId { get; set;
在我们更新到版本9之前,我可能有和奇怪的AutoMapper设置正在工作。
我们从数据库中获取数据,将其包装在一个通用对象中,然后将其映射到DTO:
//build some models
Domain test1 = new Domain() { Id = 1, Name = "Shaun" };
Domain test2 = new Domain() { Id = 2, Name = "Dave" };
//this is what I get from my API
Revi
如何在不使用IgnoreAllPropertiesWithAnInaccessibleSetter()的情况下自动忽略映射包?
cfg.CreateMap<Dto, InternetContract>();
public class InternetContract
{
public virtual string Package { get;protected set; }
}
public class Dto
{
public string Package { get; set; }
}
这里需要点帮助。我有几个类,我试图使用Automapper映射。我用的是EF核心。基本域如下所示:
Public class A
{
public string Id {get; set;}
public string Name {get; set;}
public virtual Icollection<AB> AB {get; set;}
}
Public class B
{
public string Id {get; set;}
public string Name {get; set;}
public virtual ICollection
我正在寻找用Automapper处理这个问题的最好方法
我的简化域模型(所有ID都由DB自动生成):
public class Product
{
public long Id { get; set; }
public List<OrderProduct> OrderProducts { get; set; }
}
public class Order
{
public long Id { get; set; }
public List<OrderProduct> OrderProducts { get; set; }
}
publi
我有基类
public abstract class DtoBase //NOTICE that this class is abstract
{
//some DTO specific things
}
public class concreteA_Dto : DtoBase
{
//some properties from A
}
public class concreteB_Dto : DtoBase
{
//some properties from B
}
然后我上了一些课,他们不认识,而且
public class concret