コメントを投稿した人がゲストの場合、CommentUserViewModel は null です。これは UserName が User テーブルから入力されるため正しいですが、ゲスト名が Comment テーブルに格納されている CommentUserViewModel を入力するにはどうすればよいですか?
public class CommentViewModel
{
public int Id { get; set; }
public CommentUserViewModel User { get; set; }
}
public class CommentUserViewModel
{
public string UserName { get; set; }
public string GuestName { get; set; }
}
私のマッピングは次のとおりです。
Mapper.CreateMap<Comment, CommentViewModel>();
Mapper.CreateMap<User, CommentUserViewModel>();
これは、ゲストの投稿がない場合に機能します (ユーザーのプロパティをチェックするときに null 例外にヒットしないため)。
次のマッピングはゲストの User オブジェクトを設定すると思いましたが、影響はありません。ゲスト名は空白でもかまいません。
Mapper.CreateMap<Comment, CommentUserViewModel>()
.ForMember(c => c.GuestName, m => m.MapFrom(s => s.GuestName))
.ForMember(c => c.UserName, m => m.NullSubstitute("Guest"));
User.GuestName に入力するようにマッピングを修正するにはどうすればよいですか?
編集
var comments = _repository.GetComment();
return Mapper.Map<IEnumerable<Comment>, IEnumerable<CommentViewModel>>(comments);
そして、私はEntity Frameworkを使用しています:
public partial class Comment
{
public int Id { get; set; }
public string GuestName { get; set; }
public virtual User User { get; set; }
}
public partial class User
{
public string UserName { get; set; }
}