Я уже провел много исследований по этой проблеме и нашел много примеров, но никто не совпал с моим случаем, и я не могу заставить его работать.
У меня есть две сущности, связанные отношением таблица (пример сценария заказа / продукта):
public class Order
{
public virtual int orderId { get; set; } /* THIS IS MY PK */
public virtual string orderName { get; set; }
public virtual IList<Product> products { get; set; }
}
public class Product
{
public virtual int productId { get; set; }
public virtual string productName { get; set; }
public virtual IList<Order> orders { get; set; }
}
Я в основном хочу получить все Продукты для своего Заказа, так что в общем случае hasMany будет достаточно для меня, но, как я уже сказал, у меня есть таблица отношений между Я думаю, что я должен использовать hasManyToMany с .Table ()?
Мои текущие отображения выглядят так:
public OrderMap()
{
Table("ORDER_TABLE");
Id(x => x.orderId).Column("ORDER_ID").GeneratedBy.Native();
Map(x => x.orderName).Column("ORDER_NAME");
HasManyToMany(x => x.products)
.PropertyRef("orderName")
.Table("MY_RELATION_TABLE")
.ParentKeyColumn("ORDER_NAME")
.ChildKeyColumn("PRODUCT_ID")
.Cascade.All();
}
public ProductMap()
{
Table("PRODUCT_TABLE");
Id(x => x.productId).Column("PRODUCT_ID").GeneratedBy.Native();
Map(x => x.productName).Column("PRODUCT_NAME");
HasManyToMany(x => x.orders)
.Table("MY_RELATION_TABLE")
.ParentKeyColumn("PRODUCT_ID")
.ChildKeyColumn("ORDER_NAME")
.Cascade.All()
.Inverse();
}
ORDER_TABLE MY_RELATION_TABLE PRODUCT_TABLE
ORDER_ID --------> ORDER_NAME -----> PRODUCT_ID
ORDER_NAME <--| PRODUCT_ID <------|
Как вы можете видеть, мой класс Order не ссылается на PK, поэтому я попытался PropertyRef, который приводит к ошибке DB. Если я не использую PropertyRef, моя коллекция Product всегда остается пустой.
Спасибо всем за помощь