问题标签 [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.
asp.net-mvc - 我是否必须在 Nhibernate 中的 SaveOrUpdate 之前加载/获取实体?
在我的 ASP.NET MVC 应用程序中,我将域模型与视图模型分开。
我在视图模型对象中转换我的实体,这样我就可以只用所需的数据“提供”我的视图(为此我使用了 valueinjecter)。
在保存过程中,我的控制器取回 viewmodel 对象,将其转换为域模型实体并尝试使用 SaveOrUpdate 将其持久化。我注意到,如果我尝试更新现有记录,Nhibernate 会将其视为新对象并强制插入,即使我的实体具有正确的 ID。
我之前没有加载(获取/加载)实体,因为我想避免再次重新映射所有字段。
有什么我做错了吗?实现这一目标的最佳方法是什么?
***** - 更新 - ***
我的控制器接收到一个用户(ViewModel),对其进行验证并尝试通过服务层将其保存为实体:
这是服务:
我担心我必须多次转换我的视图模型/实体。现在,当我尝试保存新用户时,我收到此消息:行已被另一个事务更新或删除(或未保存的值映射不正确)
这可能在某些方面与达林告诉我的有关。
有没有更好的方法来做我想做的事情?
更新
我注意到错误“行已更新或删除...”是由于我为我的映射定义了一个版本。我能理解的是我需要Id和与我要更新的实体匹配的版本。
我想了解其他人如何使用 DDD + ASP.NET MVC + NHibernate 来做这些事情???
解决方案
我所有的实体都定义了一个版本(我忘了说,对不起):
正如 Ayende在这里解释的那样,Nhibernate 尝试使用如下查询更新我的实体:
where y should be the version of my entity. Since I wasn't populating my entity with a version, it would generate an exception StaleObjectException.
I've added a version field to my viewmodel. I save it in a hidden field of my view together with the id.
My controller now receives a viewmodel with an Id and a version.
I inject these fields in my domain entity and let the repository save it (I don't reload my entity):
If I get a StaleObjectException exception it means that someone else has updated the DB row and I'll provide the user with some feedback.
automapper - 值注入器问题
在使用 AutoMapper 之后,我在这个网站上遇到了ValueInjecter 。我正在尝试,但我被困在一个可能非常简单的场景上。
但是在我深入研究代码示例之前,有谁知道 ValueInjecter 是否可以在中等信任的 Web 环境中工作?(像Godaddy?)
好的,进入代码!我有以下型号:
我想映射到以下 DTO:
因此,当我想从 Model 映射到 DTO 时,我需要 Model.Name.First -> DTO.FirstName,而从 DTO 到 Model 时,我需要 FirstName -> Name.First。据我了解,这不是一个简单的 Flatten/UnFlatten,因为这些词也会自行反转,即:FirstName <--> Name.First。所以名字和姓氏可以使用相同的规则,但是 MiddleInitial 呢?Model.Name.MiddleInitial -> DTO.MiddleInitial。
我看到有一些插件,但它们似乎都没有做我想要的。有没有其他人遇到过这种情况?
c# - 使用 ValueInjecter 映射 null
如何使用 valueinjecter 将 null 映射到对象?当我这样做时它会抛出一个错误。
我需要使用其他东西InjectFrom()
吗?
更多信息
我有一个返回对象域的存储库。然后我想将此域映射到视图模型。如果对象不存在,存储库将返回 null。我无法将空对象映射到视图模型。我该如何做到这一点?
valueinjecter - ValueInjecter:我应该在哪里下载二进制文件?CodePlex 还是 NuGet?
我想我有两个选择:
1) 从 CodePlex 下载:http: //valueinjecter.codeplex.com/
2)从NuGet官方包源下载(目前下载量只有133个)。
我更喜欢从 NuGet 下载,但我有点担心它的安全性。我不知道是谁做的包裹。NuGet 上的包是由 ValueInjecter 的作者还是其他受信任的用户制作的?
谢谢
c# - 无法让 ValueInjecter 映射 COM 对象
请参阅以下代码。使用 AutoMapper 时测试通过,但使用 ValueInjecter 时测试失败:
有任何想法吗?谢谢。
编辑:
根据 Omu 的回答,问题似乎与 COM 对象有关,而不仅仅是 FirewallAPI.dll 类。所以我将标题从“无法获取 ValueInjecter 以映射 FirewallAPI.dll 类”更改为“无法获取 ValueInjecter 以映射 COM 对象”。
asp.net-mvc - 带有 IQueryable 的 ValueInjecter
我需要使用 ValueInjecter映射IQueryable<User>
到。IQueryable<SimpleUser>
这可能吗?
我试过了:
但这不能转换为存储的表达式……嗯,方法InjectFrom
.
自动映射器可以做到这一点吗?
我想要类似的东西:
但是使用某种映射器工具。
c# - ValueInjecter 和 DataTable
我试图找出 ValueInjecter,这样我就可以在我们自己开发的小 ORM 中使用它。因为我应该支持 DataRow 和 DataTable 映射,所以我正在尝试为这种类型实现映射器。老实说,文档还不够好,我想试一试。也许 Omu 或该库的其他一些用户会回答。
这是我的 DataRow 注射器
这很好用。所以这里的问题是我如何为 DataTable 实现它并返回 Ienumarable 或 IList。我期望做的代码片段就像。
我怎样才能做到这一点。谢谢
~~~~~~ 这是我在 Omu 的帮助下编写的完整代码
automapping - ValueInjecter - 递归映射
我对自动映射很陌生,甚至对 ValueInjecter 也很陌生。如果这是一个简单的问题,我很抱歉,但我似乎无法在任何地方找到答案。
我将如何进行递归映射?例如,这是我当前的工厂方法,将 Subject(来自我的数据服务)映射到 SubjectViewModel:
我猜这对于 ValueInjecter 来说是一种基本的情况,所以如果有人能指出我正确的方向,我将不胜感激!
这是一个假的,但完整的代码示例:
编辑- 我知道这是一种天真的方法,它不是递归的。现在我只是想做到这一点,无一例外
现在我得到:
System.ArgumentException:“System.Collections.Generic.List`1[TestValueInjector.SubjectViewModel]”类型的对象无法转换为“System.String”类型。
c# - Checking for IEnumerable with reflection
EDIT
The bare-bones version of this question is, if I have some object o
, how would I check to see if o is of some type that implements IEnumerable<string>
with reflection? The original question is much more specific, but an answer to the above would be just as good. Sorry if I gave too much detail on this question
END EDIT
The following is a contrived ValueInjecter POC. Everything works well except for the isCollectionMapping
method at the very bottom. I'm trying to get it to return true if and only if both the source and target property are any object that implement IEnumerable<respectiveTypes>
.
I've tried IsAssignableFrom
and also IsInstanceOfType
, but neither seems to work.
Everything else works since when I uncomment the second line of the method to check explicitly for properties of name "Children", it works fine.
Note - I do know there are issues with this example. Namely, I'm trying to check for any old IEnumerable<>
but yet always knowing enough to return List<>
; it's just a silly proof of concept at this point.
c# - 自定义 ValueInjecter 注入中的动态类型转换
我为ValueInjecter创建了一个自定义注入类,它为通用子集合进行递归注入,但它适用于现有的目标对象,而不是像 VI 站点上的“CloneInjection”示例那样进行克隆。但是,目前我正在转换为已知类型 (ICollection<MyTargetType>),因此注入类仅适用于一种硬编码类型。我似乎无法找到一种动态投射泛型的方法,有什么建议吗?这是我的“RecursiveInjection”类的 SetValue 代码。
谢谢,丹奥