我正在开发一个创建WMS系统的新产品开发。我以前使用ASP,VB和其他技术来完成它,我们没有对映射进行硬编码。但现在我正在使用MVC和实体框架工作,我很难过。如何将事务表中的一列映射到多个表中的列。
我有交易表 反式 TRANSID orderref TTYPE 的productid 数量 ....(更多专栏) 现在,orderref将包含Receiptkey,orderkey,movementkey,adjustmentkey和TType列,它将告诉我我正在处理哪种类型的事务,并根据我将知道要进一步链接的表。现在我如何在实体框架工作中实现这一点。这是最重要的一步。我用其他语言多次这样做但现在使用EF我被卡住了。请帮忙。我在网上查了很多但是我还没找到。我是MVC和实体框架工作架构的新手。任何指导都将受到高度赞赏。
Ranjit
答案 0 :(得分:0)
要实现您的目标,您应该使用Table-per-Type层次结构。但是你的列TType不是必需的,因为EF通过外键链接匹配它。 如何在codefirst方法中执行此操作,您可以阅读here。 简而言之:您将基类型映射到基表,并将继承的类型映射到包含详细信息的链接表。
实施例: 您可以在数据库中创建三个表:
TransactionBases
列TransId
,以及所有交易的其他常用列;
ConcreteTransactionAs
,其中TransId
列是TransactionBase
的主键和外键,其他特定于此事务类型列;
ConcreteTransactionBs
,其中TransId
列是TransactionBase
的主键和外键,其他特定于此事务类型列;
然后在您的代码中创建三个实体类:
public class TransactionBase
{
[Key]
public Guid TransId {get;set;}
... //other common properties for all transaction types
}
[Table("ConcreteTransactionAs")]
public class ConcreteTransactionA: TransactionBase
{
...//specific to this transaction type columns
}
[Table("ConcreteTransactionBs")]
public class ConcreteTransactionB: TransactionBase
{
...//specific to this transaction type columns
}