0

我想我发现了一个错误。

我正在做的是以下内容:

  1. 我创建一个新实体并将该实体添加到管理器。

    var createConexion = function (origen, destino) {
        var metadataStore = manager.metadataStore;
        var conexionType = metadataStore.getEntityType("ConexionPalanca");
        var newConexion = conexionType.createEntity();
    
        newConexion.PalancaDestinoID(destino.PalancaID());
        newConexion.PalancaOrigenID(origen.PalancaID());
        newConexion.Activa(true);
    
        manager.addEntity(newConexion);
    
        return newConexion;
    };
    
  2. 取消更改。

    var cancelChanges = function () {
        return manager.rejectChanges();
    };
    
  3. 我运行本地查询。

        var getConexiones = function () {
            var query = EntityQuery.from("ConexionesPalancas");
            return manager.executeQueryLocally(query);
        };
    

执行这些步骤时,调用 executeQueryLocally 时出现以下错误:

Uncaught TypeError: Can not read property 'entityAspect' of null at line 9249 (breeze.js)

我正在使用微风 0.74.2

编辑:这是我正在使用的模型:

public class Palanca {
    public int PalancaID { get; set; }
    /*More properties ommited*/
    public virtual ICollection<ConexionPalanca> ConexionesSalientes { get; set; }
    public virtual ICollection<ConexionPalanca> ConexionesEntrantes { get; set; }
}

public class ConexionPalanca {
    public int PalancaOrigenID { get; set; }
    public virtual Palanca PalancaOrigen { get; set; }

    public int PalancaDestinoID { get; set; }
    public virtual Palanca PalancaDestino { get; set; }
    public string Anchor { get; set; }
}

public class PalancaConfiguration : EntityTypeConfiguration<Palanca> {
    public PalancaConfiguration() : base() {
    HasKey( p => p.PalancaID );
    Property( p => p.PalancaID )
            .IsRequired()
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    HasMany( p => p.ConexionesSalientes ).WithRequired( cp => cp.PalancaOrigen).HasForeignKey(cp=>cp.PalancaOrigenID);
    HasMany( p => p.ConexionesEntrantes ).WithRequired( cp => cp.PalancaDestino).HasForeignKey( cp => cp.PalancaDestinoID ).WillCascadeOnDelete(false);
    }
}

public class ConexionPalancaConfiguration : EntityTypeConfiguration<ConexionPalanca> {
    public ConexionPalancaConfiguration() {
        HasKey( cp => new {cp.PalancaOrigenID, cp.PalancaDestinoID} );

        HasRequired( cp => cp.PalancaOrigen ).WithMany( p => p.ConexionesSalientes ).HasForeignKey( cp => cp.PalancaOrigenID );
        HasRequired( cp => cp.PalancaDestino ).WithMany(p=>p.ConexionesEntrantes).HasForeignKey( cp => cp.PalancaDestinoID );
    }
}
4

2 回答 2

1

这是一个错误。它已在 v 0.74.3 中修复,可通过微风网站或通过 nuget 获得。请让我们知道这是否可以解决问题。

于 2012-12-06T23:40:18.487 回答
0

我发现了一个类似的错误。事实证明,这个错误就在我身边。看来您正在设置连接表。确保您的模型正确配置了 foreignKey 属性(或 fluent API)。为什么要自己设置ID,不应该这样让微风来处理吗?

newConexion.PalancaDestinoID(destino); <---
newConexion.PalancaOrigenID(origen);   <---
newConexion.Activa(true);

以下效果很好:

createTeamUser = function (user, team, temporary) {
            var teamUserType = metadataStore.getEntityType("TeamUsers");
            var newTeamUser = teamUserType.createEntity();
            newTeamTemp = manager.addEntity(newTeamUser);
            newTeamUser.Team(team);
            newTeamUser.User(user);



            user.TeamUsers().push(newTeamTemp); 
            team.TeamUsers().push(newTeamTemp);
            return newTeamTemp;
        },

使用此模型:

public class TeamUsers
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long TeamUsersId { get; set; }

    public long TeamId { get; set; }
    [ForeignKey("TeamId")]
    [InverseProperty("TeamUsers")]
    public Team Team { get; set; }

    public long UserId { get; set; }
    [ForeignKey("UserId")]            //<---- Withour these attributes i got a null error too 
    [InverseProperty("TeamUsers")]    //<---- 
    public User User { get; set; }

    public bool Temporary { get; set; }

    //[Timestamp]
    //public byte[] TimeStamp { get; set; }
}

User模型中使用此字段:

 [InverseProperty("User")]
    public ICollection<TeamUsers> TeamUsers { get; set; }

问题:Julianyus 在将新实体添加到管理器之前添加导航属性。他正在为detached实体设置属性。据我了解,在将实体添加到经理/现金之后,对实体所做的一切都应该在微风文档中完成。在添加到缓存之前使用实体是否安全?

于 2012-12-04T09:33:55.427 回答