我正在尝试在Entity Framework Core中映射实体,并收到以下错误。我有两个主要实体Person
和PersonNote
,它们具有一对多关系。
一个人可以有很多人的笔记。我尝试检索伪造品的方法确实返回了一个结果,但是在尝试映射时失败了。我定义了两个映射,您可以在我的帖子中看到。一种是将PersonNote与Person映射,以便可以评估AuthorName。中的AuthorId与个人ID相关的PersonNote。
我的PersonNote模型包含AuthorName,但不包含DataModel。我正在尝试在createmap函数中映射该值。我错过了什么吗?>
缺少类型映射配置或不支持的映射。\ r \ n \ r \ n映射类型:\ r \ nEntityQueryable`1->
我已经定义了以下模型
namespace Genistar.Organisation.Models.User { public class PersonNote { public PersonNote() { Person = new HashSet<Person>(); } public int Id { get; set; } public int PersonId { get; set; } public string Note { get; set; } public int AuthorId { get; set; } public string AuthorName { get; set; } public string CreatedBy { get; set; } public DateTime Created { get; set; } public ICollection<Person> Person { get; set; } } } namespace Genistar.Organisation.Models.DataModels { [Table(nameof(PersonNote), Schema = "common")] public class PersonNote { public int Id { get; set; } public int PersonId { get; set; } public string Note { get; set; } public int AuthorId { get; set; } public string CreatedBy { get; set; } public DateTime Created { get; set; } [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public DateTime RecordStartDateTime { get; set; } [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public DateTime RecordEndDateTime { get; set; } } } namespace Genistar.Organisation.Models.DataModels { public class Person { public int Id { get; set; } public int? TitleId { get; set; } public string FirstName { get; set; } public string FirstNamePref { get; set; } public string MiddleName { get; set; } public string LastName { get; set; } public DateTime? DateOfBirth { get; set; } public string Gender { get; set; } public int AddressId { get; set; } public string TelephoneNumber { get; set; } public string MobileNumber { get; set; } public string Email { get; set; } public int? PartnerId { get; set; } public bool Enabled { get; set; } public string CreatedBy { get; set; } public DateTime Created { get; set; } public string ModifiedBy { get; set; } public DateTime Modified { get; set; } [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public DateTime RecordStartDateTime { get; set; } [DatabaseGenerated(DatabaseGeneratedOption.Computed)] public DateTime RecordEndDateTime { get; set; } public Address Address { get; set; } public Title Title { get; set; } public Client Client { get; set; } public List<PersonNote> PersonNotes { get; set; } } }
CreateMap函数
CreateMap<Genistar.Organisation.Models.DataModels.Person, Genistar.Organisation.Models.User.PersonNote>() .ForMember(t => t.AuthorId, opt => opt.MapFrom(s => s.Id)) .ForMember(t => t.AuthorName, opt => opt.MapFrom(s => s.FirstName + " " + s.LastName)); CreateMap<Genistar.Organisation.Models.DataModels.PersonNote, Genistar.Organisation.Models.User.PersonNote>() //.ForMember(t => t.Id, opt => opt.MapFrom(s => s.Id)) //.ForMember(t => t.PersonId, opt => opt.MapFrom(s => s.PersonId)) //.ForMember(t => t.Note, opt => opt.MapFrom(s => s.Note)) //.ForMember(t => t.AuthorId, opt => opt.MapFrom(s => s.AuthorId)) //.ForMember(t => t.CreatedBy, opt => opt.MapFrom(s => s.CreatedBy)) //.ForMember(t => t.Created, opt => opt.MapFrom(s => s.Created)); .ForMember(t => t.Id, opt => opt.Ignore()) .ForMember(t => t.PersonId, opt => opt.Ignore()) .ForMember(t => t.Note, opt => opt.Ignore()) .ForMember(t => t.AuthorId, opt => opt.Ignore()) .ForMember(t => t.CreatedBy, opt => opt.Ignore()) .ForMember(t => t.Created, opt => opt.Ignore());
查询-请注意,此处返回的PersonNote是Genistar.Organisation.Models.User.PersonNote类型
[FunctionName(nameof(GetPersonNote))]
[UsedImplicitly]
public Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "person-note/{id}")] HttpRequest req,
int id) => _helper.HandleAsync(async () =>
{
var personNotes = _organisationRepository.GetPersonNotes(id);
return new OkObjectResult(_mapper.Map<PersonNote>(personNotes));
});
public IEnumerable<PersonNote> GetPersonNotes(int personId)
{
var PersonNotes1 = _context.PersonNotes.Where(p => p.PersonId == personId);
return PersonNotes1;
}
我正在尝试在Entity Framework Core中映射实体,并收到以下错误。我有两个主要的实体Person和PersonNote,它们具有一对多的关系。一个人可以有很多...
您的示例没有意义,在同一名称空间中不能有2个“ PersonNote”类。看起来您具有Entities,然后分离了ViewModel / DTO,尽管这样做会使相同的命名混淆。如果需要或需要,那么我建议为命名空间起别名。即: