0

我正在开发创建 WMS 系统的新产品。我过去使用 ASP、VB 和其他我们没有对映射进行硬编码的技术来完成它。但现在我正在使用 MVC 和实体框架工作,我很难过。如何将事务表中的一列映射到多个表中的一列。

我有交易表 trans Transid orderref TType productid qty ....(更多列)现在 orderref 将保存 Receiptkey、orderkey、movementkey、adjustmentkey 和 TType 列将告诉我我正在处理的交易类型并基于该我会知道要进一步链接哪个表。现在我如何在实体框架工作中实现这一点。这是最重要的一步。我已经用我的其他语言多次这样做了,但现在使用 EF 我被卡住了。请帮忙。我在网上查了很多,但我没有找到。我是 MVC 和实体框架工作架构的新手。任何指导将不胜感激。

兰吉特

4

1 回答 1

0

要实现您想要的,您应该使用 Table-per-Type 层次结构。但是您的列 TType 不是必需的,因为 EF 通过外键链接匹配它。如何在 codefirst 方法中执行此操作,您可以在此处阅读。简而言之:您将基本类型映射到基本表,并将继承的类型映射到包含详细信息的链接表。

示例:您可以在数据库中创建三个表:

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
}
于 2013-11-04T08:29:15.660 回答