繁体   English   中英

实体框架连接表与附加字段

[英]Entity Framework join table with additional field

关于实体框架的最佳实践问题。

我有一个Cases表和一个Users表,我想加入他们的多对多关系。 但是,我希望连接本身能够将关于该关系的信息存储在“UserType”字段中。

在SQL中很容易做 - 两个主数据表和第三个用外键链接两个数据表,并包含一个额外的UserType列。

   create table #user ( UserId int, Info nvarchar(4000) )
   create table #case ( CaseId int, Info nvarchar(4000) )
   create table #jointable ( UserId int, CaseId int, UserType nvarchar(99))

令我困惑的是EF能够自己定义连接表,将其从开发人员手中夺走。 在这个例子中,我是否需要将所有三个定义为EF类,或者是否有一种方法可以构建它,我只定义了两个类,Case和User,让EF为我处理连接,同时仍然获取我的UserType?

我正在使用“代码优先”EF,而不是那应该对解决方案有很大影响。

干杯,马特

EF负责仅使用简单的多对多关系创建连接表。 与您的情况一样,我没有看到任何其他方式,但显式创建连接类

public class UserCase
{
     public virtual User User { get; set; }
     public virtual Case Case { get; set; }

     public virtual string UserType { get; set; }
}

使用EF实现此目的的唯一方法是创建两个one-to-many关系:

public class User
{
    public int UserId {get; set;}
    public string Info {get; set;}

    public virtual ICollection<UserCase> UserCase {get; set;}
}
public class Case
{
    public int CaseId {get; set;}
    public string Info {get; set;}

    public virtual ICollection<UserCase> UserCase {get; set;}
}
public class UserCase
{
    public int CaseId {get; set;}
    public int UserId {get; set;}

    public virtual Case Case {get; set;}
    public virtual User User {get; set;}

    public string UserType {get; set;}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM