在ASP.NET MVC中使用Entity Framework更新包含嵌套项的复杂记录的正确模式是使用视图模型和映射器。视图模型是一个简化的模型对象,它只包含视图所需的属性,并将所有嵌套属性转换为单个属性。映射器是将视图模型转换为此复杂记录对象的桥梁。
以下是一个示例解决方案,该示例使用名为Product的数据模型,并且每个Product具有1个或多个Option。这是一个Product数据模型的示例代码:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection
为了更新Product对象,可以创建一个名为ProductViewModel的视图模型对象。ProductViewModel具有与Product相同的属性,但它还有一个名为OptionViewModels的ICollection,其中包含OptionViewModel的对象。以下是ProductViewModel的示例代码:
public class ProductViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ICollection OptionViewModels { get; set; }
}
public class OptionViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int Price { get; set; }
}
现在,需要创建两个映射器,一个将Product转换为Product