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; }
}