Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

проблемы с выводом REST

#c_sharp #rest


Имеется 2 таблицы:

Встреча (id, тема, idPlace).   

Место (id, адрес). Связаны по полю idPlace->id.  

Созданы модели для этих таблиц:

public class Place  
{  
    public int Id { get; set; }  
    public string Address { get; set; }  
} 


public class Meeting  
{   
    public int Id { get; set; }  
    public string Theme { get; set; }  
    public Place FPlace { get; set; }  
}  


Репозиторий:    

public Meeting GetMeeting(int id)  
    {  
        using (var connection = new SqlConnection(_connectionString))  
        {  
            connection.Open();  
            using (var command = connection.CreateCommand())  
            {  
                command.CommandText = "SELECT m.id, m.theme,     
                                       p.address " +  
                                      "FROM [dbo].meeting AS m " +  
                                      "INNER JOIN [dbo].place AS p " +  
                                      "ON m.place_id = p.id " +  
                                      "WHERE m.id = @id";  

                command.Parameters.AddWithValue("@id", id);
                using (var reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        return new Meeting
                        {
                            Id = (int)reader["id"],
                            Theme = (string)reader["theme"],
                            Time = (DateTime)reader["time"],
                            Duration = (TimeSpan)reader["duration"],
                            FPlace = new Place
                            {
                                Address = (string)reader["address"]
                            }
                        };
                    }
                    return null;
                }
            }
        }
    }


Ну и сам Rest:


[HttpGet]
[Route("api/meeting/get/{id}")]
public Meeting GetMeeting(int id)
{
    return _repository.GetMeeting(id);
}


На мой взгляд, проблема кроется здесь  

FPlace = new Place  
{  
     Address = (string)reader["address"]  
}     


При GET-запросе (api/meeting/get/{id}) выдает не только данные из таблицы Встреча,
адрес из таблицы Place, а еще и Id = 0(из таблицы Place). 

Как бы от него избавиться (Id)?
    


Ответы

Ответ 1



Вариант А: как уже было сказано в комментариях public class Place { [IgnoreDataMember] public int Id { get; set; } public string Address { get; set; } } Вариант B: var meet = _repository.GetMeeting(id); return new { id = meet.Id, theme = a.Theme, place = meet.FPlace.Address}; получается плоский список без излишеств конечно неплохо было бы убедиться, что meet у нас не null

Комментариев нет:

Отправить комментарий