我想我发现了一个错误。
我正在做的是以下内容:
我创建了一个新实体并将该实体添加到管理器中。
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;
};
取消更改。
var cancelChanges = function () {
return manager.rejectChanges();
};
我运行本地查询。
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 );
}
}
答案 0 :(得分:1)
这是一个错误。它已在v 0.74.3中修复,可通过breeze网站或通过nuget获得。如果这可以解决问题,请告诉我们。
答案 1 :(得分:0)
我遇到了类似的错误。原来这个bug就在我身边。您似乎正在设置连接表。确保使用foreignKey属性(或流畅的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
实体上设置属性。据我所知,breeze-Docs与实体完成的所有事情都应该在将其添加到经理/现金之后。在添加到缓存之前使用实体是否安全?