Свободная проблема отображения nHibernate - PullRequest
2 голосов
/ 26 мая 2011

У меня есть две таблицы, скажем, магазин и отдел.

ShopTable
  ShopId
  ShopName

DepartmentTable
  DepartmentId
  ShopId
  Name
  Type

Хорошо, теперь я сопоставляю магазинный класс с классом магазина

   public class Shop
   {
        public virtual int ShopId {get; set;}
        public virtual string ShopName {get; set;}
        public virtual Department Toys { get; set; }
        public virtual Department Hardware { get; set; }
        public virtual Department Food { get; set; }
   }

   public class Department
   {
       public virtual int DepartmentId { get; set; }
       public virtual int ShopId { get; set; }
       public virtual string Name { get; set; }
       public virtual DepartmentType Type { get; set; }
   }

Как мне сопоставить оборудование и продукты для игрушек?

   public class ShopMap : ClassMap<Shop>
   {
       Id(x => x.ShopId);
       Map(x=> x.ShopName);
       // How do I map these according to the DepartmentType enum?
       Map(x=> x.Toys);
       Map(x=> x.Hardware);
       Map(x=> x.Food);
   }

   public class DepartmentMap : ClassMap<Department>
   {
       Id(x => x.DepartmentId);
       Map(x=> x.ShopId);
       Map(x=> x.Name);
       Map(x=> x.Type);
   }  

1 Ответ

2 голосов
/ 26 мая 2011

Структура класса, которую вы показываете в вопросе, не будет поддерживать то, что вы хотите сделать, учитывая схему таблицы базы данных. От класса Shop до класса Department есть отношение один ко многим. Вот отображение, которое будет работать с учетом структуры вашей таблицы:

  public class Shop
   {
        public virtual int ShopId {get; set;}
        public virtual string ShopName {get; set;}
        public virtual IList<Department> Departments { get; set; }
   }

   public class Department
   {
       public virtual int DepartmentId { get; set; }
       public virtual Shop Shop { get; set; }
       public virtual string Name { get; set; }
       public virtual DepartmentType Type { get; set; }
   }

Для отображения:

   public class ShopMap : ClassMap<Shop>
   {
       Id(x => x.ShopId);
       Map(x=> x.ShopName);

       HasMany(c => c.Departments);
   }

   public class DepartmentMap : ClassMap<Department>
   {
       Id(x => x.DepartmentId);

       References(x => x.Shop, "ShopId");

       Map(x=> x.Name);
       Map(x=> x.Type);
   }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...