更新实体框架中的连接表

时间:2018-02-21 21:34:04

标签: c# entity-framework

我有一个开发人员类,应用程序类。使用Fluent API,我已经使用EF创建了一个联结表:

        modelBuilder.Entity<Developer>()
            .HasMany<Application>(d => d.Applications)
            .WithMany(a => a.Developers)
            .Map(ad =>
            {
                ad.MapLeftKey("DeveloperRefId");
                ad.MapRightKey("ApplicationRefId");
                ad.ToTable("DeveloperApplication");
            });

插入新应用程序时,EF会按预期写入联结表。

但是,当我更新时,联结表中没有任何更新。任何想法都会受到高度赞赏!我尝试过的一件事是我尝试连接每个开发人员,它将做的是创建一个新的应用程序ID然后插入到交叉点表适当,但如何让它更新呢?

 public IHttpActionResult Post([FromBody] Application application)
        {
                using (var db = new ApplicationLibraryContext())
                {
                    // see if update is required
                    var entity = db.Applications.Find(app.Id);
                    if (entity != null)
                    {
                        db.Entry(entity).CurrentValues.SetValues(app);
                        db.SaveChanges();
                        return Ok(app.Id);
                    }

                   // else insert new 
                   // . . . 
         }

其他信息

public class Application
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Note { get; set; }
    public int OwnerId { get; set; }
    public virtual List<Developer> Developers { get; set; }
}

public class Developer : IModificationHistory
{
    public int DeveloperId { get; set; }
    public string DeveloperName { get; set; }
    [JsonIgnore]
    public virtual List<Application> Applications { get; set; }
    public DateTime DateModified { get; set; }
    public DateTime DateCreated { get; set; }
}

0 个答案:

没有答案