0

这是我的问题。我会尽量让我的问题尽可能简单。所以,我在数据库中有 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();

但我错过了一些东西。我希望你明白。我首先使用实体​​框架和代码。非常感谢任何建议。谢谢。PS:再澄清一次。如果我使用 workID=5 和 UserID=1,在第三个表中,应该从 ID 为 1 的用户的信息中创建新行并使用 ID 5。你明白了吗?我希望有人能得到它。。

4

1 回答 1

0

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

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;}
}

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

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;}
}
于 2012-05-27T19:17:11.323 回答