【发布时间】:2017-11-12 04:36:27
【问题描述】:
我有一个模型与另一个模型相关:
public class Portfolio : BaseEntity, IEntityBase
{
public string Name { get; set; }
public Org Organization { get; set; }
public bool IsPrivate { get; set; }
}
当我尝试保存它时(将organization 字段的值指向数据库中的现有记录),ModelState 无效(“组织”:输入无效)。
我将Organization 的id 与剩余的有效负载一起发送:
{
"Name": "Port 1",
"Organization": 16
}
而且Controller代码很简单:
[HttpPost]
public IActionResult Create([FromBody]Portfolio item){
if (ModelState.IsValid){
_PortfolioRepo.Add(item);
_PortfolioRepo.Commit();
return new OkObjectResult(item);
}
else{
return BadRequest(ModelState);
}
}
有趣的是,当我在有效负载中指定 Organization 字段时,Create() 方法中的 item 将作为 null 出现,因此我无法从其 repo 中手动检索 Organization并链接到Portfolio。当我省略Organization 时,它会很好地保存实体。
如果我将Organization 的详细信息包含在有效负载中,那么EF 将在数据库中保存一个新 组织记录。但是如何链接到现有模型而不是保存新模型?
【问题讨论】:
标签: c# asp.net-core asp.net-core-mvc entity-framework-core asp.net-core-webapi