我有一个开发人员类,应用程序类。使用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; }
}