【发布时间】:2021-09-10 20:53:39
【问题描述】:
我有活动并且有可以参加的用户。为了将事件与用户联系起来,我创建了一个新实体(表)作为链接参考(m-m)。
现在,我有点卡住了。在向事件添加新用户时,我收到异常:“尝试保存更改时,'BoardZoneEventCustomer.BoardZoneEventId' 的值是未知的。这是因为该属性也是关系中的主体实体所在的外键的一部分不知道。”
但在这个问题之前,我能够插入新行......现在它已经坏了。花了很多时间解决它。
控制器:
[HttpPost("enroll")]
public async Task<IActionResult> Enroll([FromBody] EventCustomerCreationDto eventCustomer)
{
var eventCustomerAdd = _mapper.Map<EventCustomerDto>(eventCustomer);
var eventCustomerCreated = await _eventCustomerService.AddAsync(eventCustomerAdd);
return new ObjectResult(eventCustomerCreated) { StatusCode = 201 };
}
服务(用于 m-m 表):
public async Task<EventCustomerDto> AddAsync(EventCustomerDto eventCustomerDto)
{
var customer = await _customerRepository.GetByIdAsync(eventCustomerDto.CustomerId);
var eventId = await _eventRepository.GetIdAsync(eventCustomerDto.BoardZoneEventId);
var bzEvent = new BoardZoneEventCustomer
{
Customer = customer,
BoardZoneEvent = eventId
};
if (await _eventCustomerRepository.IsDublicated(eventCustomerDto.CustomerId, eventCustomerDto.BoardZoneEventId))
{
throw new CustomerDublicateEnrollingException("Already registered.");
}
await _eventCustomerRepository.AddAsync(bzEvent);
return _mapper.Map<EventCustomerDto>(bzEvent);
}
忘记发布模型:
public class EventCustomerCreationDto
{
public int BoardZoneEventId { get; set; }
public string CustomerId { get; set; }
}
public class EventCustomerDto
{
public int BoardZoneEventId { get; set; }
public BoardZoneEventDto BoardZoneEvent { get; set; }
public string CustomerId { get; set; }
public CustomerDto Customer { get; set; }
}
public class BoardZoneEventDto
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public string Country { get; set; }
public string City { get; set; }
public decimal Price { get; set; }
public int? MaxParticipantsNumber { get; set; }
public int AlreadyRegisteredParticipants { get; set; }
public string Description { get; set; }
public int FileEntityId { get; set; }
public BoardZoneEventType EventType { get; set; }
}
【问题讨论】:
-
你能发布 BoardZoneEventCustomer 类吗
标签: asp.net-core asp.net-web-api entity-framework-core