使用NancyFx将实体框架对象作为JSON返回

时间:2016-10-28 17:04:24

标签: c# json entity-framework nancy

我正在使用NancyFX和C#与.NET 4.0构建一个小型API(用于读取操作 - GET)

我正在使用Entity Framework 6.0来访问SQL Server 2008R2数据库。

我使用Nancy公开了以下路线(这仅用于测试目的):

public ExampleNancyModule() 
{
    Get["/v1/address_types"] = parameters =>
    {
        var address_types = context.address_type.First();
        return Response.AsJson(address_types);
    };
}

我可以使用Postman访问路线,但是我收到一个空的响应主体。如何使用Nancy返回对象和/或对象列表?

我想首先需要完成更多的配置。我是Nancy的新手,今天早上我才开始使用它。这似乎很有希望!

感谢您的支持。

1 个答案:

答案 0 :(得分:2)

我找到了这种情况的解决方案:

我已经使用NewtonSoft.Json更改了Nancy附带的默认Json Serializer

ExampleNancyModule中的代码保持不变,但是我添加了一个Boostrap文件来覆盖Nancy的默认行为。我的Bootstrap.cs文件如下所示:

namespace MyProject
{
    public class Bootstrap : DefaultNancyBootstrapper
    {
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);

            container.Register<JsonSerializer, CustomJsonSerializer>();
        }
    }

    public class CustomJsonSerializer : JsonSerializer
    {
        public CustomJsonSerializer()
        {
            this.ContractResolver = new CamelCasePropertyNamesContractResolver();
            this.Formatting = Formatting.Indented;
        }
    }
}

有了这个,我可以获得一个尊重我的实体框架模型的属性和JSON配置的JSON响应。希望这有助于其他人。