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 
) 

我已经使用实体框架数据库第一个模型创建了Web API。生成的类看起来如下:

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); 
     } 

调用get国家或GET城市返回

500内部服务器错误

+0

500(通常)的HTTP响应代码表示处理请求时发生异常。您需要检查您的服务器端日志并找出异常情况。从那里可能会清楚问题是什么。 –

+0

查看get操作的代码也很方便。 –

+0

我在我的问题中添加了get和put操作。我认为我的代码需要更新才能跟踪服务器端日志。 – bojo

回答

相关问题