复杂的C#对象级联更新

时间:2015-12-11 02:49:39

标签: 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 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 {
        ...
    }

我使用Web API,SQL / EF在上面的类上创建CRUD操作。 但是,我的问题是,当我发布到/schedules/时,我希望更新所有相关属性。我正在POST一个原始的JSON对象,我可以正确地解析它。问题是,如果我在数据库中有media密钥unique或数据库中的任何其他对象的hash对象,则POST失败并出现密钥重复异常,因为它正在尝试重新添加对象。我想更新那个场景中的关系......我应该怎么做才能纠正这个问题?

请询问您是否需要任何其他信息。 提前谢谢。

修改

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

0 个答案:

没有答案