问题标签 [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.
c# - 使用 EntityFramework 和 MVC ModelBinding 保存具有特殊字符的字段时出错
在我的 ASP.NET MVC4 应用程序中保存实体时,我遇到了 (2) 个字段的问题:
- 电子邮件
- 电话
@
如您所知,这些字段通常会有特殊字符-
。这是我的控制器代码,使用 ValueInjecter 通过模型绑定从水合对象注入我的模型类:
我得到的错误如下:
“字符串或二进制数据将被截断。语句已终止”
好吧,乍一看,您可能会说这是 SQL 中字段的大小,但真正的问题是因为这些特殊字符而被伪装。如果我在字段中输入以下内容:
电话:11234565454514564561
邮箱:blahblahblahblah
...然后一切正常。
但是,如果我输入:
电话:123-456-7890
电子邮件:test@wow.com
我收到有关“字符串或二进制数据将被截断”的错误。所以我找到了一种解决方法,但这似乎完全没有必要,而且可能是错误的方式。如果我使用 C# 转义字符将模型绑定对象中的值显式映射到实体,那么我的值将插入如下所示:
好吧,老实说,我不知道罪魁祸首在哪里。这是 MVC 模型绑定问题、实体框架问题、C# 交易还是 ValueInjecter?我尝试在我的 ViewModel 属性上使用注释来指示数据类型,例如Phone
and ,Email
但这并没有阻止问题。只有通过转义这些字符在代码中明确是一种方法。
我做错了什么,因为我知道带有特殊字符的电子邮件和电话等字段一直保存到带有 MVC 的 EF 中?每次我有一个带有特殊字符的值时,我能做些什么来避免在这些代码行中添加这些代码?
谢谢!!
valueinjecter - 将 LinqToEntities 映射到 ViewModel
我有以下模型和视图模型(为简洁而编辑):
如何内部连接两个表并映射到视图模型?
此代码不起作用。
c# - 内联构造函数和 InjectFrom 调用返回 Object
使用 ValueInjecter,我经常发现自己在编写这样的代码:
但是,出乎意料的是,这会导致 foo1 的类型为 Object,而不是 Foo。与
和
不会编译。这没什么大不了的,因为我可以轻松做到
或者
并且它们都按预期工作,但我很好奇。为什么第一种方法不起作用?
c# - NHibernate 对我的 Iesi.Collections.ISet 做了什么?
我正在尝试测试我的一项名为 GetUsersForRole 的服务。它接受一个简单的字符串并将其传递给我的 RoleRepository 以处理 NHibernate 并获取一个角色集合,其中包含为其 RoleName 传入的字符串。为此,我的 RoleRepository 上有一个 Find 函数,它调用此代码:
所以上面的代码将返回一个角色列表,其中有一个定义为 Iesi.Collections.ISet 的属性,称为 Users。如果给定的角色绑定了用户(通过多对多),则填充此属性。
从这里开始,我处理这个 Find 函数的结果并获得第一个角色,然后我使用 ValueInjector 将 role.Users 属性映射到一个 IEnumerable 集。这 100% 有效。这是执行此操作的代码:
我正在使用 value Injector 的 Automapper Simulation 类来处理集合映射。这可以在这里找到。我必须制作一个特殊的 Mapper 来处理 Iesi.Collections.ISet 到 IEnumerable 的映射:
同样,这 100% 有效。在 ISetToIEnumerable 映射器类中,参数源为 Iesi.Collections.ISet {NHibernate.Collection.PersistantSet}。这就是尝试对此进行单元测试时出现问题的地方。
我正在尝试使用此单元测试来测试成功运行:
当我调试它并进入 service.GetUsersForRole("role1") 调用时,我会从我的 mockRoleRepository 中取回我的模拟数据。这里的问题是我的 role.Users 属性返回类型为 Iesi.Collections.HashedSet (这是在我的实体构造函数中实例化它以用于 NHibernate 的测试和实际运行的方式)。现在这成为我的 ISetToIEnumerable 类中的一个主要问题。我的来源是输入为 Iesi.Collections.HashedSet。
我知道由于缺少 NHibernate 会话实例,我将无法使用 NHibernate.Collection.PersistantSet 键入我的模拟。有没有人对这里发生的事情以及我如何能够在我的模拟数据安排中复制 NHibernate 对我的 Iesi.Collections.ISet 所做的事情有任何想法?
c# - 使用 ValueInjector 或 AutoMapper 展平集合
给定以下示例类:
使用 jgauffin 的扩展方法来扩展 ValueInjector以使用集合,以下将把 's 的集合展平为Order
's 的集合LineItem
:
2个问题:
- 上述模式是使用 ValueInjector 将 's 集合展平为
Order
's集合的正确/有效用法LineItem
吗?如果没有,还有什么替代方案?(除了不使用 ValueInjector 扩展方法并且只使用一个 for 每个循环将 Header 和 OrderItem 都注入到扁平 LineItem 中) - 使用 AutoMapper 时是否有等价物?
collections - 使用 ValueInjector 映射类的步骤
快速解决以下代码不会发生映射的问题。有人可以解释为什么吗?或者我应该怎么做才能进行映射?
必修课如下
另一个孩子一
另一个孩子二
另一个家长
孩子二
孩子一
家长
c# - 如何创建自定义值注入以将我的实体映射到我的视图模型?包括尝试
我正在尝试使用 ValueInjector(来自 NuGet 的最新版本)将来自我的 EntityFramework Code First 对象的数据注入我的视图模型。我也想做相反的事情,但这是我开始的尝试。
我研究了各种映射并尝试了其中的许多。我还没有找到一个可以满足我需要的问题,而且我认为我的需要是一个相当基本的问题(SO 上有几个这样的问题,每个问题似乎都得到了不同的答案,这很好。)。
我真的试图对此进行尽职调查。我用谷歌搜索并搜索了 CodePlex 并下载了 ProDinner 应用程序(启动并运行它并在调试中逐步执行代码)。
我现在有自己的 ValueInjection 类来处理注入。我将以一种非常友好的方式粘贴我的代码和对象,以便您可以抓取并运行它们。请注意,我有一个使用基本 LoopValueInjection 的解决方案,但我不喜欢它,因为它需要手动管道来进行从实体到映射然后映射到实体的注入。ProDinner 示例有一个更加模板化的方法,我喜欢这种方法,但我无法适应我的需要。
我认为我的代码在逻辑上搞砸的地方是,如果源属性类型不是简单的对象,我不明白如何强制进行递归注入。在此示例中,Person.Address.* 属性将按名称匹配并在 PersonViewModel 类中键入这些属性;但是,注入循环遍历 Person 上的属性,并尝试匹配 Person.Address 属性的名称和类型。
我以为行
会执行此递归,但我认为不会。
所以......谁能给我任何关于如何解决这个问题的指导?
dependency-injection - Automapper 或 Value Injecter 是否使用 DI/IOC?
我没有使用这些工具中的任何一个,但我想知道它们中的任何一个是否使用 DI/IOC,或者它们是否是他们自己的 DI/IOC,或者我错过了这些工具的重点?
如果他们中的任何一个确实使用 DI/IOC,而不是他们使用什么 DI/IOC?基本上我对性能感兴趣。
c# - 是否可以使用 AutoMapper 或 ValueInjecter 将源属性映射到目标方法?
我试图将一个简单的、普通的源对象映射到一个目标对象,该对象实现一个接口(IFeatureClass)并且只有一个名为SetValue(index, value)
用于设置目标“属性”的公共方法。
我希望能够将我的对象(DTO/BO)动态映射到实现IFeatureClass的对象。可以使用调用的接口的另一种方法找到该字段的索引,该方法FindField(string fieldname)
返回该字段的索引。
您是否认为可以使用AutoMapper或ValueInjecter来完成此类工作。或者是否有任何模式或其他东西可以帮助我做到这一点?如果是这样,你能告诉我怎么做吗?我检查了文档和现有示例,但找不到符合我需要的示例。
问候, 克里斯蒂安
asp.net-mvc-3 - 是否有一种通用方法可以将新对象的值分配给同一类的原始对象的值?
我有一个具有子类和属性的原始文档对象。我有一个不同的对象,它是该对象的一个子集,它保存从表单输入的值,如果您愿意,可以是视图模型。由于两个对象都来自同一类,因此结构是相同的。
有没有办法将新对象的值一般分配给原始对象?我目前的方法是明确的:
另外我想确保只分配具有值(非空)的属性。
这可以做到吗?
提前谢谢了,
埃德
编辑:对 ValueInjector 及其类进行实验,以防止分配空值。
调用它的代码:
EDIT2:Automapper 使用的可能代码。虽然还不确定是否忽略空值,因此确实进行了合并。
提前感谢您的任何建议和帮助。