c# - New Breeze 1.4.9 - 重复的实体 - 可能的错误?

标签 c# javascript breeze

升级到 Breeze 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);
    }
}

元数据看起来:

enter image description here

我使用以下内容在客户端创建此实体:

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

到目前为止一切都很好,但是当这个实体被保存回服务器时,它会在客户端重复,如下所示(下面的屏幕截图显示了 saveChanges 之后缓存中的内容 成功回调已到达。

enter image description here

问题 尽管不应该允许,但 Breeze 为什么要复制这个实体?

编辑

我恢复到 Breeze 1.4.8,问题就消失了。以下是保存操作后 manager 包含的内容: enter image description here

最佳答案

2014 年 3 月 7 日更新

这是一个错误,现已修复并可在 GitHub 上找到。它将在接下来的几天内以完整的 zip 形式发布。 1.4.9 以上的任何版本都应包含修复程序。

原帖

抱歉,我无法从屏幕截图中看出有任何重复的内容。您是否在 EntityManager 缓存中看到两个实体具有相同的键,如果是,怎么办?您是否也在数据库上看到某种形式的重复?

或者是保存后在客户端上创建"new"实体的问题?

这些键的一部分是否可能是数据库上的标识列?如果是这样,则值得检查元数据以确保此 EntityType 的 autoGenerateKeyType 属性设置为 Identity。这将导致数据库在插入时生成一个新键,然后该实体将被发送回客户端。仅当 AutoGenerateKeyType 设置为 Identity 时,才会将此实体与其先前实体合并。否则,您最终将得到带有旧 key 的原始实体和带有新 key 的克隆版本。

否则,我认为我们需要更多信息。

关于c# - New Breeze 1.4.9 - 重复的实体 - 可能的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248585/

相关文章:

c# - 将更多项目添加到 ListView 中的同一行和同一列

c# - LINQ 最难或最容易被误解的方面是什么?

javascript - 进度条文字不显示

c# - 尝试使用 C# 写入关键字窗口元数据项

javascript - 嵌入式系统上的单页应用程序

javascript - javascript英语到阿拉伯语和其他语言的转换

javascript - Kendo UI TreeView 和数据源 : from basic to SPA

entity-framework - 我们如何通过 Breeze 使用本地时区生存

javascript - 对于映射实体, Breeze 日期未正确具体化

c# - MailKit:如何迭代最近的电子邮件以获取具有给定主题的电子邮件