gpt4 book ai didi

c# - 如何将 DTO 从 EF 映射到模型

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:53 24 4
gpt4 key购买 nike

我的 UI MVC 层中有以下模型 Person:

public class Person
{
[Required]
public string FirstName { get; set; }

[Required]
public string LastName { get; set; }

public int PersonTypeID { get; set; }

[Required]
public string Phone { get; set; }

[Required]
public string Email { get; set; }

}

在我的数据层中,我有一个具有相同属性名称但不同元(自然)的类:

public partial class Person : EntityObject { ... }

如何在数据层不知道 MVC UI 层的情况下将数据从我的数据层返回到 MVC UI 层?

注意:我还有一个简单的 IPerson 接口(interface),也有相同的属性名称。

最佳答案

你可以使用 AutoMapper在域模型和 View 模型之间进行映射。 MVC层知道数据层,但数据层不需要知道MVC层。

这是一个常见的模式:

public ActionResult Foo()
{
var person = _repository.GetPerson();
var personViewModel = Mapper.Map<Person, PersonViewModel>(person);
return View(personViewModel);
}

反之亦然:

[HttpPost]
public ActionResult Foo(PersonViewModel personViewModel)
{
if (!ModelState.IsValid)
{
return View(model);
}
var person = Mapper.Map<PersonViewModel, Person>(personViewModel);
_repository.UpdatePerson(person);
return RedirectToAction("Success");
}

如您所见,数据层不需要了解 MVC 层的任何信息。 MVC 层需要了解数据层。

关于c# - 如何将 DTO 从 EF 映射到模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com