WebApi接收带引用的模型(未附加到Context)

时间:2013-09-03 15:40:58

标签: c# entity-framework asp.net-mvc-4 asp.net-web-api

我正在尝试将一个复杂的类型传递给WebApi,在我的ApiController上有这个:

    [HttpPost]
    public void DoSomeCrud(JObject data)
    {
        ComplexModel item = data.ToObject<ComplexModel>();
        // Do some logic here
    }

我的问题是我的ComplexModel中的一个属性是Entity Framework实体。如果已分离,我在传递该实体时没有问题,但是一旦从DbContext获取该实体,模型就无法按预期传递给WebApi。

我的问题是.. :无论如何分离我的实体保留我对外键的引用?因为我需要WebApi方面的那些引用。

由于

1 个答案:

答案 0 :(得分:0)

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

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

简单的例子,如果你有Customer个实体,你也应该有CustomerDto个实体来预测你想要的Customer个属性。