Вы можете использовать ViewModel, который может инкапсулировать это, и эта модель может иметь свойство, которое может оценить выше.
В моем случае я использовал AutoMapper и создал конфигурацию отображения, где я также выполняю преобразование. Например, я определяю свойство Active пользователя, которое мне нужно в пользовательском интерфейсе, на основе пропуска EndDate из Db.
Используя autopper, я достигаю этого:
public static IEnumerable<Models.ViewModels.User> AsViewModel(this IEnumerable<Models.DataModels.User> userData)
{
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Models.DataModels.User, Models.ViewModels.User>()
.ForMember(vm => vm.Active, d => d.MapFrom(m => !m.EndDate.HasValue))
.ReverseMap();
});
var mapper = config.CreateMapper();
return mapper.Map<IEnumerable<Models.DataModels.User>, IEnumerable<Models.ViewModels.User>>(userData);
}
Моя модель данных, которая взаимодействует с БД через EF:
namespace PM.Models.DataModels
{
[Table("Users")]
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string UserId { get; set; }
[DefaultValue("getdate()")]
public DateTime Created
{
get { return _createdValue == DateTime.MinValue ? DateTime.Now : _createdValue; }
set { _createdValue = value; }
}
private DateTime _createdValue;
public DateTime? EndDate { get; set; }
}
}
и моя Viewmodel, которую я использую Чтобы взаимодействовать с моим уровнем презентации:
namespace PM.Models.ViewModels
{
public class User
{
public Guid Id { get; set; }
[Required]
public string FirstName { get; set; }
//[Required]
public string LastName { get; set; }
public string FullName { get { return string.Format($"{LastName}, {FirstName}"); } }
[Required]
public string UserId { get; set; }
public bool Active { get; private set; }
}
}
Как и в другом ответе, вы можете просто использовать Модель для инкапсуляции вашего FullName или в расширенном бизнес-сценарии, который вы можете преобразовать в сложные оценки.