automapper 相关问题

用于.NET的基于约定的基于对象的对象映射器和转换器

非通用类型到开放通用类型

我需要一种方法将非泛型类型映射到泛型类型以使用 IValueResolver 或 IMemberValueResolver 进行反序列化 我发现这个文档转发到 github 测试。 问题是...

回答 1 投票 0

AutoMapper 将 EF Core 实体设置为分离状态

当我使用 AutoMapper 将输入模型与数据库实体映射时,实体状态更改为“分离”,这意味着更改不会保存到数据库中。 创建地图 当我使用 AutoMapper 将输入模型与数据库实体映射时,实体状态更改为“分离”,这意味着更改不会保存到数据库中。 CreateMap<User, UserInput>().ReverseMap(); 添加/更新: [BindProperty] public IList<UserInput> UsersInput { get; set; } public async Task<PageResult> OnGetAsync() { var users = await _dbContext.Users.ToListAsync(); UsersInput = _mapper.Map<List<UsersInput>>(signers); return Page(); } public async Task<IActionResult> OnPostAsync() { var users = await _dbContext.Users.ToListAsync(); foreach (var u in users) { Console.WriteLine(_dbContext.Entry(u).State); // => Unchanged } users = _mapper.Map(UsersInput, users); foreach (var u in users) { Console.WriteLine(_dbContext.Entry(u).State); // => Detached } // Save and return await _dbContext.SaveChangesAsync(); // => Nothing is saved because entities are Detached return Page(); } 这与我映射数据的方式有关吗? 只要 UsersInput 具有与 Users 表中的 id 相对应的 id,那么就没有理由从数据库加载任何内容。只需使用 EF Core UpdateRange() 方法即可: public async Task<IActionResult> OnPostAsync() { var users = _mapper.Map<List<User>>(UsersInput); _dbContext.Users.UpdateRange(users); await _dbContext.SaveChangesAsync(); return Page(); } 这是一篇旧文章,但我也遇到了类似的问题。 我有一个实体,我使用映射器来更改某些列,但我还需要手动更改其他列。 实体从映射器返回后,它与数据库分离,但 ef 仍在跟踪具有相同 id 的实体。任何更改状态的尝试都会导致错误:“已经有一个具有相同 id 的实体正在被跟踪”。 我的伪代码解决方案如下: var entity = await db.Mytables.AsNoTracking().Where (m=>mi.d == myid).FirstorDefaultAsync(); entity2 = mapper.Map<Mytable1, MyTable>(entity); .... make some more changes to entity 2 //then attach the entity var entry = db.Entry(entity); dbw.MyTables.Attach(entity); entry.State = EntityState.Modified; var succ = await _db.SaveChangesAsync();

回答 2 投票 0

nestjsx-automapper配置文件在nestjs测试模块中找不到

编辑:这是我早期提出的一个老问题。查看文档可以立即解决这个问题(所以这不应该与任何人相关)。 我正在尝试对某些功能进行单元测试...

回答 1 投票 0

AutoMapper - 是否可以根据条件逻辑将不同的源字段映射到目的地?

我有一个包含多个字段的源类,其中 5 个字段可以为 null,但一次只能有 1 个字段不能为 null。 我想使用逻辑 b...

回答 1 投票 0

如何在AutoMapper中全局使用Ignore?

这是现在的样子。 DestinationA 和 DestinationB 派生自某个 DestinationBase 类。我需要忽略所有这些派生类的一些常见属性。有没有...

回答 6 投票 0

使用 AutoMapper 更新实体时 EF Core 引发跟踪异常

我在带有 Identity 的 Blazor Web 应用程序(在 .NET 9 上)中针对 SQL Server 数据库使用 EF Core,并且使用 AutoMapper 在数据库实体和发送出去的 DTO 之间进行转换

回答 1 投票 0

为什么 AutoMapper 在 Id 为空时添加新实体?

我的数据库上下文有一个用户模型和一个公司模型。用户可以是管理员,在这种情况下,他们不与公司关联,或者他们可以是其他两种类型之一,在这种情况下,他们将是

回答 1 投票 0

如何将参数传递给 AutoMapper 配置文件?

对于父表中的每一行,子表中都有许多子行。但是子行对于具有“JointId”和“NdtId”的每个父行都是唯一的,当我调用“

回答 1 投票 0

如何让Automapper处理未找到的输入属性?

我有两个类:CustomerLocation 和 UILocation。两者都有一个称为“产品”的属性,但在这两种情况下,“产品”的类型不同。 我正在执行以下源代码...

回答 1 投票 0

具有 Format 的 DateTime.ToString 在 AutoMapper 中不起作用

我的处理人获得所有预约: 公共异步任务>>处理(Query.GetAppointmentQuery请求,CancellationToken取消Toke...

回答 1 投票 0

当一个 DTO 使用 ID 属性和有点不同的关系模型扩展另一个 DTO 时,如何避免 DTO 之间的代码重复

我有一个域实体 KycInformation,我使用两个 DTO 来处理不同的场景: KycInformationDto 用于创建操作(无需 ID) KycInformationDetailDto 用于获取/更新操作(

回答 1 投票 0

如何在 AutoMapper 中跳过/设置为 null 属性

我正在使用 C# 的 Automapper 将通过 API 接收的 xml 对象映射到 C# 模型。 与通过相同接收的其他 xml 数据相比,接收到的 xml 可能具有也可能不具有相同的属性

回答 1 投票 0

自动映射器不映射空值

我正在尝试映射可为空的属性,但自动映射器指示此映射中存在错误。 物业:故乡 资料来源:Person.NaturalPerson.HomeTown 目的地:PersonDTO.NaturalPersonDTO.HomeTown

回答 2 投票 0

AutoMapper 并将日期时间转换为字符串

我无法解决以下问题。我有一种感觉,这是 LINQ 和表达式树的限制,但不确定如何接受 lambda 主体。我可以在不创建 cu 的情况下实现这一目标吗...

回答 3 投票 0

当模型包含集合时,热巧克力和自动映射器无法翻译

我有一个解析器,它从 Entity Framework Core 返回 IQueryable。当我直接返回 EF Core 实体时,一切正常。但是,当我尝试将 EF Core 实体映射到我的 Gr...

回答 1 投票 0

控制 WCF XML 输出中的命名空间前缀

我的WCF服务当前的输出如下(下面只显示了一部分): 我的WCF服务当前的输出如下(下面只显示了一部分): <s:Body> <executeSelectSP2Response xmlns="http://tempuri.org/"> <executeSelectSP2Result xmlns:a="http://schemas.datacontract.org/2004/07/WCF_Services.DataContract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <a:Rows> <a:RowDetail> <a:Fields> <a:FieldDetail> <a:name>STATE_CD</a:name> <a:value>1</a:value> </a:FieldDetail> <a:FieldDetail> <a:name>STATE_CD_TXT</a:name> <a:value>Alabama</a:value> </a:FieldDetail> <a:FieldDetail> <a:name>STATE_CD_SHORT_TXT</a:name> <a:value>AL</a:value> </a:FieldDetail> </a:Fields> </a:RowDetail> 在示例中,“RowDetail”元素针对美国每个州重复。 我有两个问题: 如何删除标签中的“a:”前缀。我假设我需要更改 xmlns 设置,但我不确定如何在不引发错误的情况下执行此操作。我查看了其他线程,但无法使其工作。 是否可以从输出中删除无关元素,即“行”和“字段”?我理解它们为什么在那里 - 这是由于我如何设置我的课程(下面发布),但在 IMO 看来很混乱。 课程: [DataContract] public class Results2Detail { [DataMember] public RowDetail[] Rows; } [DataContract] public class RowDetail { [DataMember] public FieldDetail[] Fields; } [DataContract] public class FieldDetail { [DataMember] public String name; [DataMember] public String value; } 这里的问题如下: 您有一些与 executeSelectSP2Response 相对应的外部类(在您的问题中未显示),在序列化时被放置在默认命名空间 "http://tempuri.org/" 中。 您可能不想要这个,因为它是 ASP.Net Web Services 的 测试默认命名空间 并且您需要将其替换为公司特定的命名空间。 有关替换它的说明,请参阅如何从服务 WSDL 中消除 tempuri.org 或 WCF 服务命名空间(摆脱 tempuri.org)。 所示类的 DataContract 属性没有 NameSpace 属性,因此 默认情况下,您的类都将被序列化到命名空间 "http://schemas.datacontract.org/2004/07/Clr.Namespace" 中。 这与其父元素的默认命名空间不同,因此必须指定覆盖命名空间。 a: 前缀引用 xmlns:a="http://schemas.datacontract.org/2004/07/WCF_Services.DataContract" 属性,并指定如此标记的每个元素都属于该命名空间。 如果您想指定Results2Detail等。等人。不属于特定名称空间(即从父级继承其名称空间),您可以这样做: [DataContract(Namespace="")] public class Results2Detail { [DataMember] public RowDetail[] Rows; } [DataContract(Namespace = "")] public class RowDetail { [DataMember] public FieldDetail[] Fields; } [DataContract(Namespace = "")] public class FieldDetail { [DataMember] public String name; [DataMember] public String value; } 如果您想要特定的命名空间,您可以执行[DataContract(Namespace = Namespaces.CompanyNameSpace)],其中Namespaces是一些静态类,例如: public static class Namespaces { const string CompanyNameSpace = "http://company.namespace.org"; // or whatever. } 你的问题#2不清楚。 您是说您希望数组显示为单层元素而不是两层嵌套元素,即: <executeSelectSP2Result> <RowDetail> <FieldDetail> </FieldDetail> </RowDetail> <RowDetail> <FieldDetail> </FieldDetail> </RowDetail> </executeSelectSP2Result> 如果是这样,那么不,使用 DataContractSerializer 无法立即实现这种级别的控制。 您必须 实现 IXmlSerializable 并手动执行,或者 切换到 XmlSerializer 并使用 XmlElement 属性装饰您的数组。

回答 1 投票 0

AutoMapper ProjectTo<>() 找不到地图

我有一个 ASP.NET 4.6.2 应用程序。我想使用 AutoMapper 的 ProjectTo<>() 方法将数据库中的结果投影到我的视图模型中。 我已经尝试了很多测试,但似乎......

回答 2 投票 0

根据具体属性的情况填写属性

我有以下场景 我有以下 C# 类 公共类 ApiRequest{ 公共整数? FwVersion { 获取;放; } 公共整数? OsVersion { 获取;放; } 公共整数

回答 1 投票 0

AutoMapper IQueryable 扩展抛出“无法比较类型 <Complex Type> 的元素”与

AutoMapper IQueryable 扩展的 Project().To().SingleOrDefault() 抛出此异常: 无法比较“App.Domain.MyComplexType”类型的元素。只有原始类型,

回答 3 投票 0

带有可包含的 IQueryable 的自动映射器投影

我正在尝试使用 AutoMapper 将包含项目的数据库实体投影到另一个域实体: IQueryable allItems = _dbContext.DBType ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.