我刚刚开始创建一个新的应用程序,并希望从一开始就实现它.
有人可以通过以下起点给出一个如何从头开始实现这个的详细示例吗?我意识到这个例子非常简单,不需要使用automapper
使用MVC w / Code First& EF
模型示例
public class Person { public int id { get; set; } public string name { get; set; } public DateTime created { get;set; }
viewmodel示例
public class User { public string name { get; set; } }
控制器示例 – (有点粗糙:))
using AutoMapper; ...... [HttpPost] public ActionResult AddUser(User user) { Person person = new Person(); person.name = user.name; person.created = DateTime.Now; db.Persons.Add(person); db.SaveChanges(); return RedirectToAction("Index"); }
我只想将此示例中的名称字段从viewmodel映射到Model.
在我发现的例子中,我特别困惑的一些观点.
在这个网站上> https://github.com/AutoMapper/AutoMapper/wiki/Getting-started
>这段代码在哪里?我是否为每种类型制作其中一种
类型映射?
Mapper.Initialize(cfg => cfg.CreateMap< Order,OrderDto>());
Mapper.Initialize(cfg => cfg.CreateMap< User,Person>()); //这是我在控制器和Global.asax中所做的,它是无效的
>这是Action结果中的部分吗?是
上面“我的例子”中的“用户”“订单”?
OrderDto dto = Mapper.Map< OrderDto>(order);
>它还提到“我在哪里配置AutoMapper”
在关于互联网的例子中,它演示了在Global.asax中创建一个单一引用到一个页面我应该创建名为“whateverIWant”的具有个人档案的页面?我猜我把“初始化代码(我在上面提到过)”放在“Application_Start()”中的Global.asax中?
是吗?有没有办法审核我的类型的映射,这在哪里完成?即字符串操作.等等..
该视频> https://www.youtube.com/watch?v=-5sZ7hq3J10在2:46失去了我,我还没有使用过存储库,也不确定它们是什么.我认为这是他审核映射,但它是希腊语给我.
感谢任何人清除我的大脑所有混合信息我试图从过多的代码样式和版本更改中学习这一点!
更新
到目前为止我的过程……
>将一个类添加到我的App_Start文件夹中.我把它命名为MappingConfig.cs
>通过从MappingConfig.cs代码中删除“.App_Start”来更正名称空间.
>在MappingConfig类的内部创建一个用于初始化地图的方法.
我的方法看起来像这样:
public static void RegisterMaps()
{
AutoMapper.Mapper.Initialize(cfg => cfg.CreateMap< User,Person>());
}
编辑:我的方法内部是初始化.初始化只需要做一次吗?如果是这样我在哪里映射其他类型.我在一些代码示例中看过“profile”但没有解释它是什么. github网站也没有解释它的用途.
>在您的控制器内部 – ActionResult,您可以通过执行以下操作进行映射:
var person = Mapper.Map< Person>(user);
编辑:最后一行代码返回“缺少类型映射配置或不支持的映射”.
>现在调用“Application_Start()”里面的Global.asax中的类和方法,其中路由和bunde配置是在程序开始时初始化地图.我在底部添加了这样的:
protected void Application_Start()
{
AreaRegistration.RegisterallAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
MappingConfig.RegisterMaps(); // 就在这儿
}
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。