У меня есть запись, которая содержит список комментариев, как показано в файле сопоставления ниже.Объект NHibernate не обновляется после добавления дочернего элемента
Моего сценарий:
- добавить новый комментарий к данной записи (как показано в методе SaveComment) и зафиксировать изменения
- потом я запрашиваю комментарии на объекте записи домена, но мой новый комментарий еще не добавлено
Является ли NHibnerate использованием устаревших данных кеша здесь? Как я могу это решить?
using (ITransaction transaction = Session.BeginTransaction())
{
try
{
Entry entry = Session.Load<Entry>(message.EntryId);
Comment comment = SaveComment(entry, new BroadcastMetadata { some data });
transaction.Commit();
// I access the entry.LatestBroadcast info here
// but my entry doesnt have the new comment assigned yet !
var latestData = entry.LatestBroadcast; // is null
}
}
private Comment SaveComment(Entry entry, BroadcastMetadata broadcastMetadata)
{
Session.Save(broadcastMetadata);
var comment = new Comment
{
Entry = entry
OldBroadcastData = entry.LatestBroadcast,
NewBroadcastData = broadcastMetadata
};
Session.Save(comment);
return comment;
}
Мои C# классы:
public class Entry
{
public virtual BroadcastMetadata LatestBroadcast
{
get
{
BroadcastMetadata latestBroadcast = null;
Comment broadcastComment = Comments.LastOrDefault();
if (broadcastComment != null)
{
latestBroadcast = broadcastComment.NewBroadcastData;
}
else
{
latestBroadcast = BroadcastData;
}
return latestBroadcast;
}
}
public virtual IList<Comment> Comments { get; protected set; }
}
Мои Отображения:
<class name="Entry" table="`LogbookEntry`">
<bag name="Comments" table="LogbookComment" lazy="false" inverse="true">
<key column="EntryId" />
<one-to-many
class="LogbookService.Core.Model.Comment, LogbookService.Core" />
</bag>
<class name="Comment" table="LogbookComment">
<many-to-one name="Entry" column="EntryId" fetch="join" lazy="false" cascade="none"
class="LogbookService.Core.Model.Entry, LogbookService.Core" />
</class>