J'expérimente l'utilisation des classes d'énumération (link) à la place et enums et "tables de recherche".AutoMapping Enumeration Class
J'ai ce scénario qui affiche une liste simple dans mon affichage où je veux afficher le nom TaskStatus de la classe d'énumération au lieu de l'StatusId mais j'obtiens cette erreur "InvalidOperationException: Le type d'entité 'TaskStatus' requiert une clé primaire à définir."
Mon approche est-elle erronée?
<table clss="table">
@foreach(var item in Model)
{
<tr>
<td>@item.Id</td>
<td>@item.Name</td>
<td>@item.Status</td>
</tr>
}
</table>
public class Tasks : BaseEntity
{
public string Name { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? DueDate { get; set; }
public byte StatusId { get; set; }
public string AssignedTo { get; set; }
public virtual TaskStatus Status { get; set; }
}
public class IndexVm
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? DueDate { get; set; }
public byte StatusId { get; set; }
public TaskStatus Status { get; set; }
}
public class TaskStatus : Enumeration<TaskStatus, int>
{
public static readonly TaskStatus NotStarted = new TaskStatus(1, "Not Started");
public static readonly TaskStatus InProgress = new TaskStatus(2, "In Progress");
public static readonly TaskStatus Completed = new TaskStatus(3, "Completed");
public static readonly TaskStatus WaitingOnSomeoneElse = new TaskStatus(4, "Waiting on someone else");
public static readonly TaskStatus Deferred = new TaskStatus(5, "Deferred");
private TaskStatus(int value, string displayName) : base(value, displayName) { }
}
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Tasks, IndexVm>()
.ForMember(vm => vm.Status, conf => conf.MapFrom(ol => ol.Status.DisplayName));
}
}