使用两个表中的行来创建第三个表

时间:2012-05-27 19:08:19

标签: c# sql-server entity-framework-4 code-first

这是我的问题。我会尽量让我的问题变得简单。所以,我在数据库中有2个类和两个表没有相互连接,让我们把它们命名为A类和类B看起来像:

public class User
{
[Key]
public int userID{ get; set; }

public User(string aName, string aPhone, string aEmail)
{
    Name = aName;
    Email= aEmail;
    Phone= aPhone;
}

public string Name { get; set; }
public string Email{ get; set; }
public string Phone{ get; set; }
}

public class Work
{
[Key]
public int workID{ get; set; }

public Work(string aWorkName, string aAddress, string sPosition)
{   
    WorkName= aWorkName;
    Address= aAddress;
    Position= aPosition;
}
public string WorkName{ get; set; }
public string Address{ get; set; }
public string Position{ get; set; }

}

我现在要做的是在数据库中创建第三类和第三个表。我应该能够使用前两个表中的信息填充第三个表中的列。例如,它的列应该是名称电话电子邮件工作名称地址位置。所以我采取NameID和workID,并根据这些主键我应该填写第三个表中的所有信息。应该怎么做?我认为应该做的事情像这样:

public class CombinedTable
{
[Key]
public int cID{ get; set; }
public User user{ get; set; }
public Work work{ get; set; }
}

并且在主函数中说一些像这样的查询:

 var UserResult = from p in db.User
 where p.UserId.Equals(userID)
 select p;
 var WorkResult= from p in db.Work
 where p.WorkID.Equals(workID)
 select p;

var combinedInfo= new CombinedTable()
        {
            User = UserResult,
            Work= WorkResult
        };
        db.CombinedTable.Add(combinedInfo);
        int savedChanges = db.SaveChanges();

但是我错过了一些东西。我希望你能得到这个想法......我首先使用实体​​框架和代码。任何建议都会非常感激。谢谢。附: :再说一次。如果我把workID = 5和UserID = 1,在第三个tabe中,可以从ID为1的用户的信息中创建新行并使用ID 5.你能得到吗?我希望有人得到它..

1 个答案:

答案 0 :(得分:0)

假设用户和工作实体之间存在1对多的关系(一个用户可以有很多工作)

public class User
{
  public int UserID { set;get;}
  public string Name { set;get;}
  public string Email{ set;get;}
  public virtual IEnumerable<Work> Works { set;get;}
}

public class Work
{
  public int WorkID { set;get;}
  public string WorkName { set;get;}
  public string Hours { set;get;}
  public string Location { set;get;}
}

这将创建具有1对多关系的表,您应该能够像这样轻松地查询

int userId=34;
var thatUser=dbContext.Users.Find(userId);
var works=thatUser.Works;

编辑:如果您想要第三个表,请为该

创建一个类
public class UserWork
{
  public int UserWorkID { set;get;}
  public int UserID { set;get}
  public int WorkID { set;get;} 
  public virtual User User { set;get;}
  public virtual Work Work  {set;get;}
}