Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架,不需要的外键_Entity Framework_Entity Framework 6 - Fatal编程技术网

Entity framework 实体框架,不需要的外键

Entity framework 实体框架,不需要的外键,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我先用EF代码 我创建了两个类。为了简单起见,假设我有一个用户表(类)和一个文件附件表。我希望将FileAttachment表与许多其他类一起使用,以便应用程序中需要FileAttachment的任何部分都可以重用该表。问题是,当EF生成模式时,它会在FileAttachment表中创建一个外键返回到User表。有没有办法禁用它 谢谢您需要建立一个中间类 public class UserDocument { public int Id {get;set;} public in

我先用EF代码

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


谢谢

您需要建立一个中间类

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;}
然后你假设的客户类别会有:

public virtual ICollection<CustomerDocument> Documents {get;set;}
公共虚拟ICollection文档{get;set;}

您的实体看起来像什么?User=UserId、UserName、ICollection。FileAttachment=FileId、ByteRepresentation、UserId(不需要的)当然有效,但似乎有些过分。。。我不知道这是否是EF的一个限制,或者这是我的模式应该如何设计的。这并不过分,这是将可重用类与其他类联系起来的方式。据我所知,没有其他方法,如果你试图在纸上画出关系,无论是你自己的方式还是用这种方法,你会发现这是完全合乎逻辑的:)
public virtual ICollection<CustomerDocument> Documents {get;set;}