Страницы

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

вторник, 4 июня 2019 г.

проблемы с выводом 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)?


Ответ

Вариант А: как уже было сказано в комментариях
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

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

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