Как использовать NHibernate ManyToMany со свойствами (столбцами) в Соединяемой таблице (Свободно NHibernate) - PullRequest
1 голос
/ 15 октября 2010

У меня есть следующие классы, с которыми мне нужно хорошо играть в NHibernate. Как мне это сделать?

public class Customer
{
   public int ID { get; set; }
   public string Name {get;set;}
}

public class Product
{
   public int ID { get; set; }
   public string Name {get;set;}
}

public class CustomerPricing
{
   public int ID { get; set; }
   public decimal Price {get;set;}
   public Customer Customer { get; set; }
   public Product Product {get;set;}
   public datetime ExpiresOn { get; set; }
   public string ApprovedBy {get;set;}
}

Я использую плавные отображения, и HasManyToMany не работает для этого (что я могу сказать). В настоящее время я работаю над этим, используя HasMany, а затем выполняю некоторые запросы LINQ в модели (хм).

Заранее спасибо.

Кайл

Ответы [ 2 ]

4 голосов
/ 15 октября 2010

Понятия не имею, как это сделать в Fluent, но поскольку вы храните данные в объединяющей таблице, вам нужно перейти от «Многозначного к одному» от CustomerPricing к Customer и Product.В файле hbm.xml сопоставление для CustomerPricing будет выглядеть следующим образом:

<many-to-one name="Product" column="ProductID" not-null="true" />
<many-to-one name="Customer" column="CustomerID" not-null="true" />

Затем в своем классе Customer (или в обоих, если необходимо) вы добавите:

<set name="CustomerPricing" table="CustomerPricing" inverse="true">
        <key column="CustomerID"></key>
        <one-to-many class="CustomerPricing" />
</set>
1 голос
/ 16 октября 2010

Попробуйте это

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
    public IList<Product> ProductsOwned { get; set; }
}

public class Product
{
    public int ID { get; set; }
    public string Name { get; set; }
    public IList<Customer> Owners { get; set; }
}

с отображением клиента как

 HasManyToMany<Product>(x => x.ProductsOwned) 
.WithTableName("CustomerPricing") 
.WithParentKeyColumn("CustomerID") 
.WithChildKeyColumn("ProductID")

и отображение продукта как

 HasManyToMany<Customer>(x => x.Owners) 
.WithTableName("CustomerPricing") 
.WithParentKeyColumn("ProductID") 
.WithChildKeyColumn("CustomerID")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...