Хранение данных в БД через HTTP PUT - PullRequest
0 голосов
/ 06 декабря 2018

Это мой метод HTTP PUT.Этот код не дает никаких исключений, но все же не хранит данные в базе данных, может кто-нибудь, пожалуйста, помогите.Модель - это мой класс установщиков геттеров.

[HttpPut]
public HttpResponseMessage Addfood(int id,[FromBody] Model model)
{
    Food food = new Food();
    var userid = db.Users.FirstOrDefault(e => e.ID == id);
    if (userid == null)
    {
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No Record Found");
    }

    food.UID = id;
    food.Name = model.Foodname;
    food.Price = model.Foodprice;
    food.Image = model.Foodimage;
    food.Date_Time = DateTime.Today;
    Category category = new Category();
    category.Name = model.Categoryname;
    db.Categories.Add(category);
    food.CatID = category.ID;
    db.Foods.Add(food);
    db.SaveChangesAsync();
    return Request.CreateResponse(HttpStatusCode.OK, food);
}

Мои таблицы базы данных.

 [dbo].[Food](
        [ID] [int] IDENTITY(1,1) NOT NULL,
        [Name] [varchar](50) NULL,
        [Image] [image] NULL,
        [Price] [varchar](10) NULL,
        [CatID] [int] NOT NULL,
        [UID] [int] NOT NULL,
        [Date/Time] [datetime] NULL,


[dbo].[Category](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NULL,

[dbo].[User](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NOT NULL,
    [Phone] [numeric](18, 0) NOT NULL,
    [Email] [varchar](50) NOT NULL,
    [AID] [int] NOT NULL,
    [Password] [varchar](50) NOT NULL,
    [Date/time] [datetime] NULL,
    [IsVerify] [bit] NULL,
    [ProfilePicture] [image] NULL,

Я звоню с этого URL

http://localhost:11434/api/Food/52

Когда я нажимаю на этот запросчерез почтальон. Это параметры, которые я даю почтальону.

{"Foodname":"Bir","Foodprice":"210","Categoryname":"H000"}

Я получаю этот код в почтальоне, но моя база данных не обновляется.Почему этот идентификатор = 0, мое поле идентификатора автоматически увеличивается.

{
    "ID": 0,
    "Name": "Bir",
    "Image": null,
    "Price": "210",
    "CatID": 0,
    "UID": 52,
    "Date_Time": "2018-12-05T00:00:00+05:00",
    "Category": null,
    "User": {
        "ID": 52,
        "Name": "h999",
        "Phone": 3332158086,
        "Email": "a.b.c@yahooooo.com",
        "AID": 36,
        "Password": "030021",
        "Date_time": "2018-12-05T03:26:13.82",
        "IsVerify": null,
        "ProfilePicture": null,
        "Address": null,
        "Flags": [],
        "Foods": [],
        "Order_Tracking": [],
        "Order_Tracking1": []
    },
    "FoodRecommendations": [],
    "Order_Tracking": [],
    "Ratings": []
}

1 Ответ

0 голосов
/ 06 декабря 2018

Попробуйте следующий код:

[HttpPut]
public HttpResponseMessage Addfood(int id,[FromBody] Model model)
{
    Food food = new Food();
    var userid = db.Users.FirstOrDefault(e => e.ID == id);
    if (userid == null)
    {
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No Record Found");
    }

    food.UID = id;
    food.Name = model.Foodname;
    food.Price = model.Foodprice;
    food.Image = model.Foodimage;
    food.Date_Time = DateTime.Today;
    Category category = new Category();
    category.Name = model.Categoryname;

    food.Category = category;
    db.Foods.Add(food);
    db.SaveChanges();
    return Request.CreateResponse(HttpStatusCode.OK, food);
}

Поскольку вы также создаете новую категорию для новой еды, вам нужно использовать food.Category=category вместо food.CatID, так как она не будет заполнена, пока вы не позвонитеSaveChanges метод

...