Хорошо, я в растерянности, будучи новичком в бризе, я все еще изучаю веревки. В моем проекте используется шаблон горячего полотенца для AngularJs и ветерок от John Papa.
Это то, чего я пытаюсь добиться: у меня есть таблицы master\slave в моей базе данных. «Агентство» имеет много людей, которых оно может «уведомить». Вот классы EF для серверной части:
public class Agency {
public Agency() {
this.Notifies = new HashSet<Notify>();
}
public long Id { get; set; }
[Required, MaxLength(50)]
public string Name { get; set; }
<<removed unneeded details>>
public bool Active { get; set; }
public virtual ICollection<Notify> Notifies { get; set; }
}
public class Notify
{
public long Id { get; set; }
public long? AgencyId { get; set; }
public string Name { get; set; }
<<removed unneeded details>>
public virtual Agency Agency { get; set; }
}
Теперь Карты:
public class AgencyMaps : EntityTypeConfiguration<Agency>
{
internal AgencyMaps()
{
HasKey(x => x.Id);
}
}
public class NotifyMap : EntityTypeConfiguration<Notify>
{
internal NotifyMap()
{
HasKey(x => x.Id);
HasOptional(x => x.Agency)
.WithMany(p => p.Notifies)
.HasForeignKey(i => i.AgencyId);
}
}
Теперь на стороне клиента я использую ветер для создания новых объектов, подобных этому:
// create a new entity
function create() {
return manager.createEntity(entityName);
}
// create a new notify entity
function createNotify(){
return manager.createEntity(entityNameNotify);
}
Затем есть два сценария, которые мне нужно выполнить: - во-первых, я получаю существующее агентство и добавляю дополнительных людей для уведомления - во-вторых, когда я создаю новое агентство и добавляю людей для уведомления
Оба терпят неудачу в одном и том же месте.
Примечание. Я использую SQL-сервер, и на данный момент мои поля Id имеют значение bigint (длинное).
Я извлекаю объект «Агентство» и помещаю его в переменную с именем «vm.agency». «vm.agency» имеет навигацию под названием «уведомления» с типом сущности «Уведомлять». Поэтому, когда я хочу создать и добавить нового человека, я вызываю эту функцию:
function addNotifyRec(){
if (vm.agency !== undefined){
var notifyRec = datacontext.agency.createNotify(); //<<< fails here
notifyRec.agencyId = vm.agency.id;
notifyRec.name = vm.notify.name;
<<removed unneeded details>>
vm.agency.notifies.push(notifyRec);
logSuccess(“New person to notify added”);
}
else
{ logError(“Agency is undefined”); }
}
Как только вызывается createNotify(), я получаю сообщение об ошибке «Идентификаторы не могут быть сгенерированы автоматически для сущностей с составными ключами».
Так что я застрял. Мне кажется, это довольно распространенный сценарий. Я, очевидно, недостаточно хорошо понимаю структуру бриза, чтобы реализовать это. Если вы можете указать мне правильное направление, я был бы признателен за вашу помощь.
ОБНОВЛЕНИЕ 09.04.2014 Я думаю, что мог бы полностью устранить эту проблему, если бы переключился на идентификатор guid и сгенерировал их на стороне клиента. Это правильное мышление?