WebApi接收带有引用的模型(未附加到上下文)
本文关键字:上下文 模型 引用 WebApi | 更新日期: 2023-09-27 18:30:06
我正试图将一个复杂类型传递给WebApi,我的ApiController上有这个:
[HttpPost]
public void DoSomeCrud(JObject data)
{
ComplexModel item = data.ToObject<ComplexModel>();
// Do some logic here
}
我的问题是,我的ComplexModel中的一个属性是实体框架实体。如果分离,我不会在传递该实体时遇到问题,但是,一旦我从DbContext获得该实体,模型就无法按预期传递给WebApi。
我的问题是..:是否有分离实体的方法来保留对外键的引用?因为我需要WebApi方面的那些参考资料。
感谢
使用实体框架中的模型作为WebApi的数据传输对象(Dto)不是最佳实践,因为您可能会遇到序列化问题,因为EF中的模型实际上是支持延迟加载和导航属性的代理(如果您不分离它的话)。
最佳实践是,为了分离关注点,您应该定义自己的Dto对象,而不是直接使用EF中的实体模型。
简单的例子是,如果您有Customer
实体,那么您也应该有CustomerDto
实体,它从Customer
投影您想要的任何属性。