您的数据库中定义了以下表格:
Transactions:
- TransactionID (PK, Identity)
- TypeID (FK)
- Amount
TransactionTypes:
- TypeID (PK, Identity)
- Type
ProductTransactions:
- TransactionID (PK)
- Discount
有两种类型的交易(事件和产品)。产品有一个额外的折扣字段,因此定义了一个附加表。
我现在有以下实体:
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位,但我很遗憾放在这里。如果有人能告诉我如何做到这一点,我真的很感激。感谢
答案 0 :(得分:0)
我不使用流利,但字段不能同时是鉴别器和映射属性。
由于您使用的是继承(ProductTransaction
is-a Transaction
),因此您可以删除该属性(Transaction
has-a TransactionType
)。