Я пытаюсь использовать отображение Fluent NHibernate для сериализации/десериализации данных.Как сериализовать/десериализовать списки элементов, используя сопоставления Fluent NHibernate?
Начиная с корневой сущности, я использую сопоставление для построения графика со всеми объектами, связанными с этим объектом. Затем я сериализую этот набор объектов.
У меня это отображение (только соответствующие части):
[Serializable]
public class Foo
{
public virtual IList<Bar> Bars { get; set;}
public virtual IList<System.Guid> Guids { get; set; }
}
[Serializable]
public class Bar
{
public virtual Foo Foo { get; set; }
}
public class BarMap : ClassMap<Bar>
{
References(x => x.Foo, "idFoo").Not.Nullable();
}
public class FooMap : ClassMap<Foo>
{
HasMany(x => x.Bars).KeyColumn("idFoo");
HasMany(x => x.Guids).Table("guids").KeyColumn("idFoo").Element("guid").AsBag().Not.LazyLoad();
}
Все работает правильно для Foo и Bar сериализации и десериализации. Но при попытке сохранить десериализованные данные в БД список Guids
не сохраняется, хотя его данные находятся в объекте Foo.
Я долго искал язык, но не нашел ничего полезного. Я тоже пробовал с Inverse
, но безрезультатно. Я также пытался использовать Cascade.SaveUpdate()
, что также не сработало.
Это потому, что он использует дополнительную таблицу для хранения значений как Element
s? Это единственная специфика в этом списке, о котором я могу думать.
Что мне не хватает, что мешает этой реставрации работать?
Любая идея приветствуется. Благодарю.
EDIT:
Список Guids сериализации и десериализации правильно. Единственное, что не сделано, это вставка DB списка, но она присутствует в десериализованных данных.
EDIT 2:
Странная часть является то, что другая часть кода в другом месте в проекте делает то же самое, на этот раз успешно. Может быть, это нечеткий параметр конфигурации NHibernate, который отличается с обеих сторон, но mainNH.xml.config - это тот же самый файл каждый раз.
Там, кажется, некоторая путаница здесь. .Net сериализация не имеет ничего общего с сопоставлениями (Fluent) NHibernate. Правильно ли десериализация? То есть вы можете видеть список объектов в объекте после десериализации? –
Какой тип данных имеет указатель столбца? он генерируется с помощью SchemaExport? – Firo
В БД Гиды являются 'UNIQUEIDENTIFIER'. Да, он создается с помощью SchemaExport. –