У меня есть следующий класс сущностей, представляющий таблицу: SystemUsers в базе данных.Здесь я использую ядро EntityFramework с пакетом nuget: Microsoft.EntityFrameworkCore.SqlServer (2.1.1)
public partial class SystemUsers
{
public SystemUsers()
{
SystemUserAssociatedCountries = new HashSet<SystemUserAssociatedCountries>();
}
public int SystemUserId
{
get;
set;
}
public string FirstName
{
get;
set;
}
public string LastName
{
get;
set;
}
public string Level
{
get;
set;
}
public string WorkPhoneNumber
{
get;
set;
}
public string MobilePhoneNumber
{
get;
set;
}
public string Location
{
get;
set;
}
public string Email
{
get;
set;
}
public int Role
{
get;
set;
}
public TimeSpan? TimeZone
{
get;
set;
}
public string CreatedBy
{
get;
set;
}
public DateTime CreatedDate
{
get;
set;
}
public string UpdatedBy
{
get;
set;
}
public DateTime UpdatedDate
{
get;
set;
}
public virtual ICollection<SystemUserAssociatedCountries> SystemUserAssociatedCountries
{
get;
set;
}
Здесь представлен входной класс, предоставляемый клиентскому приложению для отправки данных.
public class UpdateSystemUserCommand : IRequest<UpdateSystemUserCommandResponse>
{
[Required]
[Range(0, int.MaxValue, ErrorMessage = "Only positive number allowed")]
public int SystemUserId
{
get;
set;
}
[RegularExpression(Constants.GeneralStringRegularExpression)]
[Required]
public string FirstName
{
get;
set;
}
[RegularExpression(Constants.GeneralStringRegularExpression)]
[Required]
public string LastName
{
get;
set;
}
[RegularExpression(Constants.GeneralStringRegularExpression)]
public string Level
{
get;
set;
}
[RegularExpression(Constants.GeneralStringRegularExpression)]
public string WorkPhoneNumber
{
get;
set;
}
[RegularExpression(Constants.GeneralStringRegularExpression)]
public string MobilePhoneNumber
{
get;
set;
}
[RegularExpression(Constants.GeneralStringRegularExpression)]
[Required]
public string Location
{
get;
set;
}
[Required]
[EmailAddress(ErrorMessage = "Invalid EmailId")]
public string Email
{
get;
set;
}
[Required]
public SystemUserRole Role
{
get;
set;
}
[Required]
[Range(0, int.MaxValue, ErrorMessage = "Only positive number allowed")]
public int HomeCountry
{
get;
set;
}
[Required]
public List<int> Countries
{
get;
set;
}
}
public class UpdateSystemUserCommandResponse : CommandResponse
{
[JsonProperty("UpdatedStatus")]
public string UpdatedStatus
{
get;
set;
}
}
Я использую Automapper для сопоставления входящих данных с указанным классом сущностей.
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<UpdateSystemUserCommand, SystemUsers>().ForMember(dest => dest.FirstName, source => source.MapFrom(src => src.FirstName)).ForMember(dest => dest.LastName, source => source.MapFrom(src => src.LastName)).ForMember(dest => dest.Level, source => source.MapFrom(src => src.Level)).ForMember(dest => dest.WorkPhoneNumber, source => source.MapFrom(src => src.WorkPhoneNumber)).ForMember(dest => dest.MobilePhoneNumber, source => source.MapFrom(src => src.MobilePhoneNumber)).ForMember(dest => dest.Location, source => source.MapFrom(src => src.Location)).ForMember(dest => dest.Role, source => source.MapFrom(src => Convert.ToInt32(src.Role)));
}
}
Теперь, пытаясь обновить значения с помощью описанного ниже обработчика, я вижу, что для объекта пользователя установлены значения по умолчанию дляCreatedDate и CreatedBy
public class UpdateUserCommandHandler : IRequestHandler<UpdateSystemUserCommand, UpdateSystemUserCommandResponse>
{
private readonly IIntegrationEventPublisherServiceService _eventcontext;
private readonly SystemUserRepository _systemUserRepository;
private readonly IMapper _mapper;
public UpdateUserCommandHandler(IIntegrationEventPublisherServiceService eventcontext, IMapper mapper)
{
_systemUserRepository = new SystemUserRepository(new TaxatHand_StgContext());
_eventcontext = eventcontext;
_mapper = mapper;
}
public async Task<UpdateSystemUserCommandResponse> Handle(UpdateSystemUserCommand request, CancellationToken cancellationToken)
{
using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
var userExists = _systemUserRepository.UserExists(request.Email);
if (!userExists)
{
throw new RulesException("email", @"User with email address :" + request.Email + " does not exists");
}
var user = _mapper.Map<SystemUsers>(request);
user.UpdatedBy = "CMS Admin";
user.UpdatedDate = DateTime.UtcNow;
_systemUserRepository.Update(user);
await _systemUserRepository.UnitOfWork.SaveEntitiesAsync();
}
}
}
public partial class TestDBContext : DbContext,IUnitOfWork
{
public virtual DbSet<SystemUsers> SystemUsers { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<SystemUsers>(entity =>
{
entity.HasKey(e => e.SystemUserId)
.HasName("PK_dbo.SystemUsers");
entity.Property(e => e.CreatedDate).HasColumnType("datetime");
entity.Property(e => e.UpdatedDate).HasColumnType("datetime");
});
}
}
Может кто-нибудь помочь мне узнать, почему он устанавливает значения по умолчанию в этом случае?