Web API控制器接收变量嵌套对象

时间:2017-11-27 08:13:08

标签: c# json entity-framework asynchronous

我正在构建一个Web API控制器,它将接收可变数量的嵌套json数据

对我控制器的一些调用:

一个电话可以拨打3个账户费用

{

"studentid":123,

"studentname":"sam",

"totalfee1amnt":20,
"accounts":[ 

    {   "feeid":"xx",
        "fee1amnt":5
    },

    {   "feeid":"xx",
        "fee1amnt":5
    },

    {   "feeid":"xx",
        "fee1amnt":5
    }
    ]
 }

//另一个电话可以拨打4个账户费用

{
"studentid":123,
"studentname":"sam",
"totalfee1amnt":25,

"accounts":[ 

    {   "feeid":"xx",
        "fee1amnt":5
    },

    {   "feeid":"xx",
        "fee1amnt":5
    },

    {   "feeid":"xx",
        "fee1amnt":5
    },

    {   "feeid":"xx",
        "fee1amnt":5
    },
    ]
}

此控制器需要是动态的,并且在某些调用时需要更多数据。

我需要将这些数据写入数据库,或者使用实体框架,或者只需要正常插入数据库,但我更喜欢EF是Asycn,并且使用" totalfee1amnt"我需要用这个值调用其他SP。

我需要将此代码设为异步,以便同时发生多个调用。

我正在使用C#

实现这一点

我如何有效地实施

我只是在文本文件上写这个来检查一切是否正常。

以下是我的内容,我做了一些修改

public class TestController : ApiController
{
    [HttpPost]
    [Route("api/CreditlifeCalc")]
    public string TestJsonInput([FromBody] CreditlifeData input)
    {
        var jsonall = JsonConvert.SerializeObject(input.data );
        var clietid = JsonConvert.SerializeObject(input.ClientID);

        string path;

        path = (AppDomain.CurrentDomain.BaseDirectory + "\\response.json"); 
        using (FileStream fs = File.Create(path))
        {
            // writing data in string
            string dataasstring = jsonall.ToString(); 
            byte[] info = new UTF8Encoding(true).GetBytes(dataasstring);
            fs.Write(info, 0, info.Length);

            // writing data in bytes already
            byte[] data = new byte[] { 0x0 };
            fs.Write(data, 0, data.Length);
        }

        return jsonall;
    }

    public class CreditlifeData
    {
        public List<Crreditlife> data { get; set; }
        public string ClientID { get; set; }
    }

    public class Crreditlife
    {
        public int Creditlf_Id { get; set; }
        public string Name { get; set; }
        public string Amount { get; set; }
    }
}

这在调用API时工作正常,我需要确保clietid用作插入Sql server的主标记,我需要使用EF async。

0 个答案:

没有答案