在 AngularJS 指令中,我为范围变量分配了一个新值:
$scope.myPerson = { TiersId: 105191, Name: "John Smith" };
最初 $scope.myPerson 是从 BreezeJS 实体创建的。
分配新值会触发 AngularJS 的 $scope.apply(),然后被 BreezeJS 拦截。那是它变得复杂的时候。
[编辑]
好的,我发现我需要使用我在 dataContext 中注册的 EntityManager:
$scope.myPerson = myDataContext.createPerson({ TiersId: 105191, Name: "John Smith" });
function createPerson(person) {
return manager.createEntity("AccountOwner", person);
}
现在,它在以下代码中失败:
proto.createEntity = function (typeName, initialValues, entityState) {
entityState = entityState || EntityState.Added;
var entity = this.metadataStore
._getEntityType(typeName)
.createEntity(initialValues);
if (entityState !== EntityState.Detached) {
this.attachEntity(entity, entityState);
}
return entity;
};
实体类型是已知的,但 createEntity(initialValues) 函数未定义。怎么来的 ?
[编辑]
为了让事情更清楚,这里是相关的 EF 映射以及模型类:
public class MandateMappings : EntityTypeConfiguration<Mandate>
{
public MandateMappings()
{
Property(m => m.IBAN).HasMaxLength(34).IsFixedLength().IsUnicode(false);
Property(m => m.AccountOwner.Name).HasMaxLength(70);
Property(m => m.AccountOwner.City).HasMaxLength(500);
Property(m => m.CreatedBy).HasMaxLength(30);
Property(m => m.UpdatedBy).HasMaxLength(30);
}
}
public class Mandate : Audit
{
public string IBAN { get; set; }
public AccountOwner AccountOwner { get; set; }
}
public class AccountOwner
{
public string Name { get; set; }
public string City { get; set; }
}
public abstract class Audit
{
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
}