复杂C#对象级联更新

复杂C#对象级联更新,c#,sql,entity-framework,asp.net-web-api,C#,Sql,Entity Framework,Asp.net Web Api,我有以下资料: // Day Class public class Day { [Key] [JsonProperty("name")] public string name { get; set; } [JsonProperty("playlists")] public virtual List < Playlist > playlists { get; set; } } // Schedule C

我有以下资料:

// Day Class
public class Day {
    [Key]
    [JsonProperty("name")]
    public string name { get; set; }

    [JsonProperty("playlists")]
    public virtual List < Playlist > playlists { get; set; }
}

// Schedule Class
public class Schedule {
    [Key]
    public int id { get; set; }

    public virtual List < Day > days { get; set; }

    [Required]
    public string hash { get; set; }
}

// Playlist Class
public class Playlist {
    [Key]
    public int id { get; set; }

    [Required]
    [JsonProperty("name")]
    public string name { get; set; }

    [JsonProperty("media")]
    public virtual List < Media > media { get; set; }

    // Media class
    public class Media {
        ...
    }

@JenishRabadiya我已经更新了这个问题。@JenishRabadiya确实。。。如果您同时编辑父项和添加/编辑/删除子项,则需要更新对象图,这不是一项简单的任务。您可能会发现有帮助。此外,您正在使用
db.Schedules。添加尝试将实体及其所有子项插入数据库的
。您应该从数据库中获取实体(具有id),然后使用新值更新它。这样,您的实体将保持与DbContext的连接。@JenishRabadiya我已经更新了问题。@JenishRabadiya它确实。。。如果您同时编辑父项和添加/编辑/删除子项,则需要更新对象图,这不是一项简单的任务。您可能会发现有帮助。此外,您正在使用
db.Schedules。添加尝试将实体及其所有子项插入数据库的
。您应该从数据库中获取实体(具有id),然后使用新值更新它。这样,您的实体将保持连接到DbContext。
  [ResponseType(typeof(Schedule))]
        public async Task<IHttpActionResult> PostSchedule([FromBody]Object model)
        {
            var jsonSchedule = model.ToString();
            try
            {
                var _schedule = JsonConvert.DeserializeObject<Schedule>(jsonSchedule);

                db.Schedules.Add(_schedule);
                await db.SaveChangesAsync();

                return Ok();
            }