新微风1.4.9 - 重复实体 - 可能的错误?(New Breeze 1.4.9 - Dupli

2019-09-29 14:53发布

这个问题开始出现后,我升级到1.4.9微风。

我有以下实体:

public class ProjectMember
{
    public int ProjectId { get; set; }
    [ForeignKey("ProjectId")]
    [InverseProperty("ProjectMembers")]
    public Project Project { get; set; }

    public int TeamMemberId { get; set; }
    [ForeignKey("TeamMemberId")]
    [InverseProperty("ProjectMembers")]
    public TeamMember TeamMember { get; set; }
}

而它的配置:

public class ProjectMemberConfiguration : EntityTypeConfiguration<ProjectMember>
{
    public ProjectMemberConfiguration()
    {
        HasKey(a => new { a.ProjectId, a.TeamMemberId });

        // ProjectMember has 1 project, projects have many projectmember records
        HasRequired(a => a.Project)
            .WithMany(s => s.ProjectMembers)
            .HasForeignKey(a => a.ProjectId)
            .WillCascadeOnDelete(true);
    }
}

元数据的样子:

我创建与以下客户端这个实体:

manager.createEntity('ProjectMember', { projectId: projectId, teamMemberId: teamMemberId });

所有好为止,然而,当这种实体被保存回如图贝罗它就会在客户端复制服务器(下面的截图显示了在高速缓存后saveChanges succeeded达到回调。

为什么微风复制这个实体虽然它不应该被允许?

编辑

我恢复到微风1.4.8和问题就消失了。 下面是该manager保存操作后,包含:

Answer 1:

已更新2014年3月7日

这是一个错误,现在是固定的,可在GitHub上。 它将与在未来几天一个完整的拉链被释放。 上述1.4.9任何版本应该包含的修补程序。

原帖

对不起,我不能从任何被复制的截图告诉。 你看到两个实体在EntityManager的缓存使用相同的密钥,如果是的话怎么样? 你也看到某种形式的重复数据删除的数据库呢?

或者是在客户端上创建一个“新”实体后,保存的问题?

难道这些键的一部分是对数据库的标识列? 如果是这样,那么它值得检查元数据,以确保此的EntityType的autoGeneratedKeyType属性设置为标识 。 这将导致数据库生成上插入一个新的密钥,然后该实体将被发送回客户端。 合并这个实体与它的前世如果AutoGeneratedKeyType设置为身份才会发生。 否则,你最终将与两个原始实体与旧的密钥和一个克隆版的新的关键。

否则,我想我们需要更多的信息。



文章来源: New Breeze 1.4.9 - Duplicate entity - possible bug?