Здравствуйте, в моей базе данных определены следующие таблицы:
Transactions:
- TransactionID (PK, Identity)
- TypeID (FK)
- Amount
TransactionTypes:
- TypeID (PK, Identity)
- Type
ProductTransactions:
- TransactionID (PK)
- Discount
Существует 2 типа транзакций (События и Продукты). У продуктов есть дополнительное поле Скидка, поэтому определяется дополнительная таблица.
Теперь у меня есть следующие объекты:
public class Transaction
{
public virtual int TransactionID { get; private set; }
public virtual TransactionType Type { get; set; }
public virtual decimal Amount { get; set; }
}
public class ProductTransaction : Transaction
{
public virtual decimal Discount { get; set; }
}
public enum TransactionType
{
Event = 1,
Product = 1
}
Наконец, мои отображения таковы:
public TransactionMap()
{
Table("Transactions");
Id(x => x.TransactionID);
Map(x => x.Amount);
DiscriminateSubClassesOnColumn("TypeID")
.SubClass<ProductTransaction>(TransactionType.Product, x => x.References(y => y.Type));
}
public ProductTransactionMap()
{
Table("ProductTransactions");
Map(x => x.Discount);
}
Я бы хотел сказать следующее, чтобы вставить транзакцию продукта:
productRepository.Insert(new ProductTransaction { Type = TransactionType.Product, Amount = 100m, Discount = 10m });
Однако с моим отображением что-то не так. Я уверен, что моя проблема вращается вокруг бита DiscriminateSubClassesOnColumn, но я немного потерян с тем, что здесь поставить. Я был бы очень признателен, если бы кто-нибудь показал мне, как это можно сделать. Спасибо