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接收带有引用的模型(未附加到上下文)

使用实体框架中的模型作为WebApi的数据传输对象(Dto)不是最佳实践,因为您可能会遇到序列化问题,因为EF中的模型实际上是支持延迟加载和导航属性的代理(如果您不分离它的话)。

最佳实践是,为了分离关注点,您应该定义自己的Dto对象,而不是直接使用EF中的实体模型。

简单的例子是,如果您有Customer实体,那么您也应该有CustomerDto实体,它从Customer投影您想要的任何属性。

相关文章: