问题标签 [valueinjecter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1538 浏览

c# - 如何阻止 ValueInjecter 映射空值?

我正在使用 ValueInjecter 映射两个相同的对象。我遇到的问题是 ValueInjector 从我的源复制空值到我的目标。所以我将大量数据丢失为空值。

这是我的对象的一个​​示例,它有时只填充了一半,导致其空值覆盖目标对象。

0 投票
2 回答
200 浏览

c# - 如何使用 ValueInjecter 根据展平属性的名称查找源属性

这是相同问题的对应物(但使用 AutoMapper)。我使用ValueInjecter,如果有解决方案,我很感兴趣。

简化代码示例:

0 投票
5 回答
12956 浏览

asp.net-mvc - 没有一堆隐藏字段的成功模型编辑

简而言之:如何成功编辑数据库条目,而无需在编辑视图中包含模型的每个字段?

更新
所以我在数据库中有一个项目(一篇文章)。我想编辑一篇文章。我编辑的文章有很多属性(Id、CreatedBy、DateCreated、Title、Body)。其中一些属性永远不需要更改(如 Id、CreatedBy、DateCreated)。所以在我的编辑视图中,我只想要可以更改的字段(如标题、正文)的输入字段。当我实现这样的编辑视图时,模型绑定失败。我没有提供输入的任何字段都设置为某个“默认”值(例如 DateCreated 设置为 01/01/0001 12:00:00am)。如果我这样做为每个字段提供输入,一切正常,文章按预期编辑。我不知道说“模型绑定失败”是否正确,就像“如果在编辑视图中没有为它们提供输入字段,系统会用不正确的数据填充字段”。

如何以只需要为可以/需要编辑的字段提供输入字段的方式创建编辑视图,以便在调用 Controller 中的 Edit 方法时,正确填充 DateCreated 等字段,而不是设置到一些默认的、不正确的值?这是我目前的编辑方法:

如果有帮助,请编辑视图:

如果我要省略这两个输入:

当调用 Edit 方法时,它们被设置为默认值。CreatedBy 设置为Null, Created 设置为01/01/0001 12:00:00am

为什么它们没有设置为当前在数据库中设置的值?

0 投票
1 回答
2348 浏览

c# - c# ValueInjecter : 映射整个对象图

我刚刚开始为我的实体映射(DTO <-> 实体)使用 ValueInjecter。这是我的 DTO:

这是我的 NHibernate 代理类:

现在,我需要IncidentDTO从存储库中查询。来自数据库和地图的存储库查询Incident和表->使用 ValueInjecter 并返回。AgencyIncidentTypeIncidentIncidentDTOIncidentDTO

使用 ValueInjecter 进行上述映射的最佳方法是什么?

谢谢, 普拉泰克

0 投票
2 回答
206 浏览

c# - 使用具有截然不同的域和视图模型的映射框架?

如果我有两个非常不同的模型,那么使用Auto MapperValue Injecter等映射框架是否违背了目的?

例如,假设我有两个结构相同的模型,但每个属性名称都不同,因此所有常规逻辑都无用。坚持手动映射这两个模型是否也一样好?

我想我主要是想了解:

1) 除了我从其按惯例映射中获得的代码节省之外,使用映射框架还有什么好处吗?

2)在映射框架中为上述场景设置映射是否比在这种情况下手动映射更容易?(看起来不像。)

0 投票
1 回答
2613 浏览

c# - Glue vs Automapper vs Emit vs ValueInjecter 实体映射器

我正在做一个 DDD 项目,其中正在进行大量的字段映射。我正在寻找一个快速而可靠的映射库,而不是手动编写所有映射,并且似乎有很多选择。

目前我更倾向于 Glue,因为它看起来提供了相当多的功能,并且在构建时也考虑到了单元测试,这对我正在从事的项目也很重要。不利的一面是它只被下载了 200 多次,这让我认为像 ValueInjecter 这样的东西可能是一个更好的选择,因为那里有更多的支持。

我的问题是,Glue 比其他任何映射器更好还是更差?还是上面提到的映射器在性能和可用性方面的差异可以忽略不计?

0 投票
3 回答
1051 浏览

c# - Map between enums with ValueInjecter

Is it possible to map between 2 different enums?

That is, I want to take one enum value and map it to a corresponding value in a different enum type.

I know how to do this with AutoMapper:

But I'm new to ValueInjecter and can't figure it out.

** UPDATE **

The source and target enum types look something like:

So, the constants have the same names, but different values.

0 投票
4 回答
2904 浏览

nhibernate - 在不触发延迟加载或急切加载的情况下将 NHibernate POCO 复制到 DTO

我需要从NHibernate POCO对象创建DTO 。问题是 POCO 对象包含动态代理,不应将其复制到 DTO。我渴望加载我需要提前传输的所有集合和引用,我不希望 NHibernate 开始加载我没有提前加载的引用集合。

关于 SO 的几个类似问题收到的答案是:

  1. 建议 Session.GetSessionImplementation().PersistenceContext.Unproxy();
  2. 建议关闭延迟加载。

在我的情况下,第一个建议是无关紧要的,因为根据我的理解,它会导致急切加载以替换代理。实际上,它甚至不起作用 - 它不会删除我的对象中的代理。(任何解释为什么?)

第二个建议,关闭延迟加载似乎会导致所有引用和集合急切加载,基本上是加载整个数据库。我的期望是,如果延迟加载关闭,并且我没有请求集合,它将不会被加载。(我对 NHibernate 没有提供这样的选项是正确的吗?)

我正在使用具有流畅配置的 NHibernate 3.3.1。

重申我的主要问题,我需要创建清除代理的 DTO,从包含代理的 POCO 复制,并且我不想加载这些代理后面的数据。

任何包含示例代码并使用 ValueInjecter / AutoMapper 自动化流程的有用建议都将非常有帮助。

编辑#1:

遵循 Roger Alsing 的使用投影的建议,我意识到我真正在寻找的是一个类似于 ValueInjecter 的基于约定的映射。这就是为什么。最初,我的 DTO 将与模型的 POCO 定义相同。这是由于庞大的代码库依赖于在客户端项目上传输的现有 POCO。

使用投影,我必须指定必须复制哪个字段子集,并且该子集在每个上下文中可能不同(因为理想情况下,DTO 会有所不同)。当应该有第二个选项时,这将意味着将大量新代码引入服务器端。

使用 ValueInjecter,我将能够在一次调用中按照惯例填充 DTO,而无需编写特定的预测,也不必在未来维护这些预测。也就是说,如果我能够让 ValueInjecter 忽略代理对象。

鉴于在我的情况下使用投影是一个很好但不是理想的解决方案,有没有办法配置像 ValueInjecter 这样的东西来复制 POCO 而无需复制代理或在复制时触发急切/延迟加载?

0 投票
1 回答
1832 浏览

valueinjecter - 使用ValueInjecter,有没有办法只注入一次给定的属性

给定3个班级,

A 和 B 各有一个 ID 属性,然后是各种其他属性

和 C,它有一个 ID,以及 A 和 B 的组合属性,

我想要

这样来自 A 的 ID 将被保留而不被 B 覆盖。

显然,在这个简单的情况下,我可以颠倒两个调用的顺序,但在我的真实示例中,它稍微复杂一些,我不能只解决排序问题。

从本质上讲,我希望第二次注入忽略第一次注入已经处理的任何内容,并且这可能会延续到多次注入的链中。其中一些注入也可能来自相同的对象

等等

0 投票
1 回答
415 浏览

c# - ValueInjector 没有映射属性

我无法让 ValueInjector 正确映射我的对象。这是我用于映射的代码:

变量类别包含一个属性:

在我调用的实例中,该属性包含两个标准对象。问题是当我从我的类别映射到我的 CategoryDTO 时。CategoryDTO 定义如下:

映射语句运行后,我调查了 categoriesDto.Standards 的内容,我可以看到它为空。我本来希望我的标准已经映射,但我确定我错过了 ValueInjector 的一些东西。可能类似于告诉它如何将 Standard 映射到 StandardDTO。有什么想法吗?

编辑:我需要澄清一下,我正在使用这个http://valueinjecter.codeplex.com/wikipage?title=Automapper%20Simulation&referringTitle=Home

编辑 2:深入挖掘,我可以看到我的 Iesi.Collections.HashedSet 导致了这个问题。Categorys 的 Standards 属性类型为 Iesi.Collections.ISet,这变成了 HashedSet。所以我想我真正的问题是如何检查该类型的属性以及如何映射?