Entity Framework сгенерированный тип в запросе - PullRequest
0 голосов
/ 19 октября 2019

Как использовать автоматически сгенерированный тип структуры сущностей, например, свойство в пост-запросе?

Если я отправлю этот json, метод

"{"Type":{"CharacteristicId":"test1","CommodityId":"test2"},"ShankType":{"CharacteristicId":"test1","CommodityId":"test2"},"SharpeningAngel":{"CharacteristicId":"test1","CommodityId":"test2"},"SharpeningDirection":{"CharacteristicId":"test1","CommodityId":"test2"},"MaterialFor":{"CharacteristicId":"test1","CommodityId":"test2"},"WorkingLength":{"CharacteristicId":"test1","CommodityId":"test2"},"Length":{"CharacteristicId":"test1","CommodityId":"test2"},"Diameter":{"CharacteristicId":"test1","CommodityId":"test2"}}"

в SaveDrill. Это не будет работать, потому что CommoditiesCharacteristics не подходит. Я пытался украсить свойства BindNeverAttribute

[BindNever]
public int Id { get; set; }
[BindNever]
public virtual DrillBitsCharacteristics Characteristic { get; set; }
[BindNever]
public virtual Commodities Commodity { get; set; }

Но безуспешно. Можно ли как-то украсить свойства в CommoditiesCharacteristics, чтобы сделать его работоспособным. Или в этом случае только один способ создать новый тип?

Контроллер:

[HttpPost]
[Route("SaveDrill")]
public IActionResult SaveDrill(Drill drill)
{
    _toolStoreContext.CommoditiesCharacteristics.Add(drill.Type);
    _toolStoreContext.SaveChanges();
    return Ok();
}

public class Drill
{
    public CommoditiesCharacteristics Type { get; set; }
    public CommoditiesCharacteristics ShankType { get; set; }
    public CommoditiesCharacteristics SharpeningAngel { get; set; }
    public CommoditiesCharacteristics SharpeningDirection { get; set; }
    public CommoditiesCharacteristics MaterialFor { get; set; }
    public CommoditiesCharacteristics WorkingLength { get; set; }
    public CommoditiesCharacteristics Length { get; set; }
    public CommoditiesCharacteristics Diameter { get; set; }
}

public partial class CommoditiesCharacteristics
{
    public int Id { get; set; }
    public int CharacteristicId { get; set; }
    public int CommodityId { get; set; }
    public virtual DrillBitsCharacteristics Characteristic { get; set; }
    public virtual Commodities Commodity { get; set; }
}

1 Ответ

1 голос
/ 19 октября 2019

Я вижу проблему, CharacteristicId is Int в модели, но вы передаете строку в JSON.

"CharacteristicId":"test1"  

CommodityId - то же самое.

В противном случае он должен работать. Нулевые значения будут назначены, когда какое-либо свойство будет нулевым в json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...