实体框架,不需要的外键

时间:2014-06-02 20:25:50

标签: entity-framework entity-framework-6

我先使用EF代码。

我创建了两个类。为简单起见,假设我有一个User表(类)和一个FileAttachment表。我想将FileAttachment表与许多其他类一起使用,因此需要具有FileAttachment的应用程序的任何部分都可以重用该表。问题是当EF生成模式时,它会在FileAttachment表中创建一个返回User表的外键。有没有办法禁用它?

由于

1 个答案:

答案 0 :(得分:0)

您需要构建一个中间类。

public class UserDocument
{
    public int Id {get;set;}

    public int UserId {get;set;}
    public virtual User User {get;set;}

    public int FileAttachmentId {get;set;}
    public virtual FileAttachment FileAttachment {get;set;}
}

所以你的用户类现在可以拥有:

public virtual ICollection<UserDocument> Documents {get;set;}

在这种情况下,FileAttachment类将不会引用User。

如果您现在想要构建其他文档类型,只需实现另一种中间类型,即想象您想拥有CustomerDocument:

public class CustomerDocument
{
    public int Id {get;set;}

    public int CustomerId {get;set;}
    public virtual Customer Customer {get;set;}

    public int FileAttachmentId {get;set;}
    public virtual FileAttachment FileAttachment {get;set;}
}

然后你的假设客户类会有:

public virtual ICollection<CustomerDocument> Documents {get;set;}