Цель Lambda по сравнению с AWS EC2 - упростить создание небольших приложений по требованию, которые реагируют на события и новую информацию.
Если ваша партия работает в течение 15 минут, вы можете использовать лямбда-функцию.
Но если вы хотите, чтобы пакетная обработка выполнялась, вам следует проверить AWS Batch
. Серия AWS .
Здесь хорошая статья о демонстрации использования пакета aws.
@efdee
Я имел ту же проблему и провел почти два дня на это. У меня были многие многим, отношения и таблица ссылки не обновлялись также. Я плохо знаком с NHibernate, просто пытаясь изучить это, так возьмите все, что я говорю с мелкой частицей соли.
Хорошо оказалось, что это не Быстрый NHibernate, ни отображение, но я не понимающий, как NHibernate работает с many-many. В many-many отношениях, если наборы на обоих объектах не заполняются, NHibernate не сохраняет данные к таблице ссылки.
Скажем, у меня есть это объекты в many-many отношениях:
partial class Contact
{
public string ContactName {get; set;}
public IList Locations {get; set;}
}
partial class Location
{
public string LocationName {get; set;}
public string LocationAddress {get;set;}
public IList Contacts {get;set;}
}
когда я добавляю к местоположению для Контакта. Местоположения, я должен удостовериться, что контакт является также существующим внутренним местоположением. Контакты.
таким образом для добавления местоположения у меня есть этот метод в моем классе Контакта.
public void AddLocation(Location location)
{
if (!location.Contacts.Contains(this))
{
location.Contacts.Add(this);
}
Locations.Add(location);
}
Это, кажется, решило мою проблему, но как я сказал, что просто беру NHibernate и изучаю это, может ли быть существует лучший путь. Если у кого-либо есть лучшее решение, отправьте.
Это - сообщение, которое указало на меня для проверки обоих наборов: http://www.coderanch.com/t/217138/Object-Relational-Mapping/link-table-of-ManyToMany-annotation
Я не уверен, как Вы делаете это с Быстрым NHibernate, но необходимо установить опцию Cascade на сумке (TripItems
). Как обычно, у Ayende есть полезное сообщение о каскадных опциях.
От быстрого Google я предложил бы, чтобы Вы попробовали:
HasManyToMany<TripItem2>(x => x.TripItems).AsBag()
.WithTableName("TripItems_TripItemAttributeValues_Link")
.WithParentKeyColumn("TripItemAttributeValueId")
.WithChildKeyColumn("TripItemId")
.LazyLoad()
/*-->*/ .Cascade.All(); /*<-- this is the bit that should make it work */
У David Kemp есть он правильный: Вы хотите добавить каскад к своей сумке.
Я всегда отредактировал рукой (и создавал из руки), отображающиеся файлы, таким образом, мой естественный наклон состоит в том, чтобы поместить его там. Можно сделать это следующим образом:
<bag name="TripItems" lazy="true" table="TripItems_TripItemAttributeValues_Link" cascade="all">
<key column="TripItemAttributeValueId" />
<many-to-many column="TripItemId" class="ETP.Core.Domain.TripItem2, ETP.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bag>
Я нашел, что хранение моих классов 'чистый' и хранение всего, чтобы сделать с nHibernate в файле .hbm.xml сохраняют мой инструмент для очистки решения. Тот путь, если существует новое программное обеспечение ORM, которое я хочу использовать, я просто, заменяет отображающиеся файлы и не переписывает классы. Мы используем наши Модульные тесты, чтобы протестировать классы и дать тестируемость xml, хотя мне действительно отчасти нравятся методы Быстрого NHIBERNATE.
Я - испуганный Каскад. Все () не являются действительно решением моей проблемы - это была одна из вещей, которые я попробовал. Проблема не состоит в том, что объекты, добавленные к набору, не сохраняются - они уже находятся в базе данных в то время, когда они добавляются к набору. Это просто, что записи в таблице ссылки не создаются. Кроме того, я думаю Каскад. Все () также заставили бы дочерние объекты быть удаленными, который не является желательным поведением в моем сценарии. Я попытался использовать Каскад. SaveUpdate (), но как я указал, это решает что-то, что не является действительно моей проблемой :-)
Однако для проверки я повторю это решение и сообщу результат.
Что касается хранения чистых классов, это - 100% случай с Быстрым NHibernate. Отображения класса, которые Вы создаете, являются файлами кода C#, которые идут вместе с Вашими классами объекта, в значительной степени как .hbm.xml, файлы были бы.
I've got it and I hope this helps someone else out there. The issue is that I had inverse='true' on both bags. If you read the excerpt below you'll note that there needs to be inverse set to true on only one of the bags:
Note the use of inverse="true". Once again, this setting tells NHibernate to ignore changes made to the categories collection and use the other end of the association - the items collection - as the representation that should be synchronized with the database.
У меня точно такая же проблема, но я использовал NHibernate.JetDriver. Я безуспешно пытался использовать рекомендованный ответ. Кто-нибудь знает, есть ли у NHibernate.JetDriver ограничение по отношению к многим ко многим?
Вот мои файлы hbm на тот случай, если кому-то захочется на мгновение их просмотреть:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Ace.Docs.Core.Domain" assembly="Ace.Docs.Core">
<class name="Ace.Docs.Core.Domain.Address, Ace.Docs.Core" table="Addresses" lazy="true">
<id name="Id" column="ID">
<generator class="identity" />
</id>
<property name="Address1" column="Address1" />
<property name="Address2" column="Address2" />
<property name="City" column="City" />
<property name="EmailAddress" column="EmailAddress" />
<property name="Phone1" column="Phone1" />
<property name="Phone2" column="Phone2" />
<property name="PostalCode" column="PostalCode" />
<property name="StateOrProvince" column="StateOrProvince" />
<many-to-one name="AddressTypeMember" column="AddressTypeID" class="AddressType" />
<bag name="HasPersonalInfo" table="Link_PersonalInfo_Addresses" lazy="true" cascade="save-update" inverse="true" >
<key column="AddressID"></key>
<many-to-many column="PersonalInfoID" class="PersonalInfo" />
</bag>
</class>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Ace.Docs.Core.Domain" assembly="Ace.Docs.Core">
<class name="Ace.Docs.Core.Domain.PersonalInfo, Ace.Docs.Core" table="PersonalInfo" lazy="true">
<id name="Id" column="ID">
<generator class="identity" />
</id>
<property name="Prefix" column="Prefix" />
<property name="FirstName" column="FirstName" />
<property name="MiddleName" column="MiddleName" />
<property name="LastName" column="LastName" />
<property name="SIN" column="SIN" />
<property name="Birthdate" column="Birthdate" />
<property name="Note" column="Notes" />
<bag name="HasAddress" table="Link_PersonalInfo_Addresses" lazy="true" cascade="save-update" inverse="true" >
<key column="PersonalInfoID"></key>
<many-to-many column="AddressID" class="Address" />
</bag>
</class>
Я тоже боролся с этим, и у меня была совсем другая причина моих проблем. В моем примере, если бы у меня был объект без каких-либо отношений «многие ко многим», я мог бы просто вызвать saveOrUpdate, и все было бы хорошо. Но если у меня были какие-либо отношения «многие ко многим», я должен был убедиться, что мой вызов saveOrUpdate находится в пределах BeginTransaction и CommitTransaction. Я новичок в использовании Nhibernate, поэтому извиняюсь, если это очевидно. Но не для меня.
Вызовите Session.Flush () или используйте транзакцию.