2
고객 클래스는 "Id"속성을 사용할 수있는 Entity에서 상속됩니다. 그러나 컨트롤러에 JSON 객체를 게시 할 때마다 "Id"를 제외한 모든 속성이 시작됩니다. "Id"는 항상 0입니다FromBody는 바인딩하지 않습니다. Inherited Id
아이디어가 있습니까?
public abstract class Entity<TId> : IEquatable<Entity<TId>>
{
public TId Id { get; protected set; }
}
public class Customer : Entity<int>
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
//Controller
public void Post([FromBody] Customer customer)
{
if (customer.Id > 0)
_customeRepository.Update(customer);
_customeRepository.Insert(customer);
}
OOPS! 당신 말이 맞아요! –
세터가 보호되어 있습니다. 하지만 나는 대안을 가지고 있습니까? 만약 내가 속성 설정자를 그대로두고 싶다면? 이 속성을 어떻게 설정할 수 있습니까? –
setter가 보호되는 경우 파생 클래스에서만 액세스 할 수 있습니다. 또 다른 옵션은 반사를 통해 setter를 호출하는 것입니다. 그러나 어쨌든 그것은 코드 냄새이고 권장 접근법은 아닙니다. – CodeFuller