C# EntityFramework使用TryGetObjectByKey更新联接表中的复合键值

C# EntityFramework使用TryGetObjectByKey更新联接表中的复合键值,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,我首先使用实体框架代码,下面的模型是一个带有复合键的连接表 模型代码 public class Schedule { public int BabyId { get; set; } public int VaccineId { get; set; } public Baby Baby { get; set; } public Vaccine Vaccine { get; set; } public DateTime Time { get; se

我首先使用实体框架代码,下面的模型是一个带有复合键的连接表

模型代码

    public class Schedule
{
    public int BabyId { get; set; }
    public int VaccineId { get; set; }
    public Baby Baby   { get; set; }
    public Vaccine Vaccine { get; set; }
    public DateTime Time { get; set; }
}  
实体框架配置代码

    public sealed class ScheduleConfig : EntityTypeConfiguration<Schedule>
{
    public ScheduleConfig()
    {
        HasKey(q =>
        new
        {
            q.BabyId,
            q.VaccineId
        });

        HasRequired(t => t.Baby)
            .WithMany(t => t.Schedules)
            .HasForeignKey(t => t.BabyId);

        HasRequired(t => t.Vaccine)
             .WithMany(t => t.Schedules)
             .HasForeignKey(t => t.VaccineId);

        ToTable("Schedule", "dbo");

    }
}  
公共密封类ScheduleConfig:EntityTypeConfiguration
{
公共ScheduleConfig()
{
HasKey(q=>
新的
{
q、 宝贝,
q、 疫苗
});
HasRequired(t=>t.Baby)
.有许多(t=>t.时间表)
.HasForeignKey(t=>t.BabyId);
需要(t=>t.疫苗)
.有许多(t=>t.时间表)
.HasForeignKey(t=>t.VaccineId);
ToTable(“附表”、“dbo”);
}
}  
以下代码更新数据库中的表

     public bool Update(T t)
    {
        var entityName = GetEntityName<T>();

        object originalItem;
        var key = ((IObjectContextAdapter)Context).ObjectContext.CreateEntityKey(entityName, t);
        if (((IObjectContextAdapter)Context).ObjectContext.TryGetObjectByKey(key, out originalItem))
        {
            ((IObjectContextAdapter)Context).ObjectContext.ApplyCurrentValues(key.EntitySetName, t);
        }
        Context.SaveChanges();
        return true;
    }  
公共bool更新(T)
{
var entityName=GetEntityName();
对象源项;
var key=((IObjectContextAdapter)Context.ObjectContext.CreateEntityKey(entityName,t);
if(((IObjectContextAdapter)Context.ObjectContext.TryGetObjectByKey(key,out originalItem))
{
((IObjectContextAdapter)Context.ObjectContext.ApplyCurrentValues(key.EntitySetName,t);
}
SaveChanges();
返回true;
}  
问题是当我更改其中一个键值时,更新方法中If块中的代码永远不会执行,表也永远不会更新。
我的问题是我应该改变我的模型还是有更好的代码来处理这个问题。 有什么想法吗