1

У меня есть таблицы с отношением «один ко многим» в базе данных Azure SQL.Azure GET действие с отношением «один ко многим»

--Countries 
create table Countries 
(
    ID int not null primary key clustered identity, 
    Name varchar(100) not null 
) 
--Cities 
create table Cities 
(
    ID int not null primary key clustered identity, 
    Name varchar(100) not null, 
    CountryID int not null foreign key references Countries(ID) on delete cascade 
) 

Я создал веб-API, используя первую модель базы данных Entity Framework. Создаваемые классы выглядит следующим образом:

Country.cs

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public Country() 
    { 
     this.Cities = new HashSet<City>(); 
    } 

    public int ID { get; set; } 
    public string Name { get; set; } 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<City> Cities { get; set; } 

City.cs

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public City() 
    { 

    } 

    public int ID { get; set; } 
    public string Name { get; set; } 
    public int CountryID { get; set; }  
    public virtual Country Country { get; set; } 

CitiesController.cs

private TripperDBEntities db = new TripperDBEntities(); 

    // GET: api/Cities 
    public IQueryable<City> GetCities() 
    { 
     return db.Cities; 
     } 

// POST: api/Countries 
     [ResponseType(typeof(Country))] 
     public async Task<IHttpActionResult> PostCountry(Country country) 
     { 
      if (!ModelState.IsValid) 
      { 
       return BadRequest(ModelState); 
      } 

      db.Countries.Add(country); 
      await db.SaveChangesAsync(); 

      return CreatedAtRoute("DefaultApi", new { id = country.ID }, country); 
     } 

Вызов ПОЛУЧИТЬ Страны или ПОЛУЧИТЬ Города возвращает

500 Внутренняя ошибка сервера

+0

Код ответа HTTP 500 (обычно) означает исключение, возникшее при обработке запроса. Вам нужно будет изучить свои серверные журналы и выяснить, что такое исключение. Оттуда, вероятно, будет ясно, в чем проблема. –

+0

Было бы также полезно увидеть код для действия get. –

+0

Я добавил, что получил и применил действие в моем вопросе. Я думаю, что моему коду понадобится обновление для отслеживания журналов на стороне сервера. – bojo

ответ

Смежные вопросы