Я хочу отобразить sth как этот использующий быстрый Nhibernate, но я не уверен, как отобразить таблицу материально-технических ресурсов
Это - таблицы, которые я имею:
Продукт (идентификатор, Имя...)
Склад (идентификатор, имя...)
Материально-технические ресурсы (Product_id, Warehouse_id, StockInHand)
Я имею, отображают продукт и Склад как ниже
Общедоступный ProductMap () {
Id(x => x.Id); Map(x => x.Name); HasManyToMany(x => x.StoresStockedIn) .Cascade.All() .Inverse() .Table("Inventory"); }
общедоступный WarehouseMap ()
{ Id(x => x.Id); Map(x => x.Name); HasManyToMany(x => x.Products) .Cascade.All() .Table("Inventory"); }
Проблема, с которой я сталкиваюсь, состоит в том что, как я могу отобразить StockInHand (как материально-технические ресурсы должны смоделировать отображение?).
или есть ли другой способ смоделировать этот сценарий?
Я считал некоторые существующие вопросы, но еще не разбираюсь, понимают, что сделать.
Спасибо
Что касается NHibernate, ваши отношения не являются отношениями "многие ко многим". Настоящий «многие ко многим» не имеет дополнительных столбцов, таких как StockInHand в вашем примере.
Вы должны отобразить это как два отношения «один ко многим», а инвентарь отобразить как объект.
Что-то вроде (я пропустил другие свойства):
public class Product
{
public List<Inventory> Inventory { get; set; }
}
public class Warehouse
{
public List<Inventory> Inventory { get; set; }
}
public class Inventory
{
public Product Product { get; set; }
public Warehouse Warehouse { get; set; }
public bool StockInHand { get; set; }
}
public ProductMap() {
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.Inventory)
.Cascade.All()
.Inverse()
.Table("Inventory");
}
public WarehouseMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.Inventory)
.Cascade.All()
.Inverse()
.Table("Inventory");
}
public InventoryMap()
{
CompositeId()
.KeyReference(x => x.Product, "Product_id")
.KeyReference(x => x.Warehouse, "Warehouse_id")
Map(x => x.StockInHand);
}