Свободный NHibernate HasMany, где источник представляет собой разделенную запятыми строку идентификаторов - PullRequest
0 голосов
/ 22 апреля 2011

Я пытаюсь обернуть голову вокруг беглого nHibernate, пытаясь сделать такой вид картирования:

public class ClassA : Entity
{
   public virtual string SomeField { get; set; }
}

public class ClassB : Entity
{
   public virtual string ClassAIds { get; set; }
   public virtual IList<ClassA> ClassAList { get; set; }
}

Где Entity в основном гарантирует, что оба класса имеют поле Id в качестве основного ключа базы данных.

База данных будет выглядеть так:

 table ClassA:
   int Id,
   varchar(25) SomeField


 table ClassB:
   int Id,
   varchar(50) ClassAIds

Я пытаюсь написать некоторую карту, чтобы объект ClassB заполнялся сущностями ClassA в ClassAList. Возможно ли иметь что-то похожее на:

public void Override(AutoMapping<ClassB> mapping)
{  
   mapping.HasMany(x => x.ClassAIds.Split(new char[] { ',' }).Select(i => int.Parse(i)).ToList()).KeyColumn("Id");
}

Я не очень понимаю, как передать тип целевого класса и возможно ли вообще этого добиться.

1 Ответ

0 голосов
/ 22 апреля 2011

Я не думаю, что вы можете сделать то, что вы просите. Я думаю, что вам лучше всего отобразить его так, как оно отображается в базе данных, и обработать загрузку этой коллекции ClassAList за пределами отображения. Я бы настроил ваше автоматическое отображение, чтобы игнорировать коллекцию. Это просто не очень хороший способ обработки отношений с точки зрения базы данных.

...