相关疑难解决方法(0)

使用Automapper进行深层映射

我试图用多级成员映射对象:这些是类:

 public class Father
    {
        public int Id { get; set; }
        public Son Son { get; set; }
    }

    public class FatherModel
    {
        public int Id { get; set; }
        public int SonId { get; set; }
    }

    public class Son
    {
        public  int Id { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

这是我尝试自动化它的方式:

 AutoMapper.Mapper.CreateMap<FatherModel , Father>()
                      .ForMember(dest => dest.Son.Id, opt => opt.MapFrom(src => src.SonId));
Run Code Online (Sandbox Code Playgroud)

这是我得到的例外:

表达式'dest => Convert(dest.Son.Id)'必须解析为顶级成员而不是任何子对象的属性.请在子类型或AfterMap选项上使用自定义解析程序.参数名称:lambdaExpression

谢谢

c# automapper

28
推荐指数
3
解决办法
3万
查看次数

强类型通用属性替代方案

让我们从一个简单的视图模型开始:

public class MyViewModel
{
  public string Value { get; set; }
  public IEnumerable<SelectListItem> Values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

下拉列表可能如下所示:

@Html.DropDownListFor(m => m.Value, Model.Values)
Run Code Online (Sandbox Code Playgroud)

但是,因为下拉列表需要两个值,所以不能使用它:

public class MyViewModel
{
  [UIHint("DropDownList")]
  public string Value { get; set; }
  public IEnumerable<SelectListItem> Values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

视图包含:

@Html.EditForModel()
Run Code Online (Sandbox Code Playgroud)

因为下拉知道源代码没有固有的方法,直到你从UIHint中驱逐:

public DropDownListAttribute : UIHintAttribute
{
  public DropDownListAttribute (string valuesSource)
    : base("DropDownList", "MVC")
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

那么人们可能会喜欢它:

public class MyViewModel
{
  [DropDownList("Planets")]
  public string PlanetId{ get; set; }
  public IEnumerable<SelectListItem> Planets { …
Run Code Online (Sandbox Code Playgroud)

c# generics asp.net-mvc attributes automapper

9
推荐指数
1
解决办法
1249
查看次数

使用AutoMapper从MVC中的ViewModel更新实体

我有一个Supplier.cs实体及其ViewModel SupplierVm.cs.我正在尝试更新现有供应商,但我收到黄色死亡屏幕(YSOD),并显示错误消息:

操作失败:无法更改关系,因为一个或多个外键属性不可为空.当对关系进行更改时,相关的外键属性将设置为空值.如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象.

我知道它为什么会发生,但我不知道如何解决它.这是一个关于正在发生的事情的截屏视频.我认为我得到错误的原因是因为当AutoMapper做它的事情时,这种关系就会丢失.

以下是我认为相关的实体:

public abstract class Business : IEntity
{
  public int Id { get; set; }
  public string Name { get; set; }
  public string TaxNumber { get; set; }
  public string Description { get; set; }
  public string Phone { get; set; }
  public string Website { get; set; }
  public string Email { get; set; }
  public bool IsDeleted { get; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework automapper asp.net-mvc-5

9
推荐指数
1
解决办法
4343
查看次数