这是我的问题。我会尽量让我的问题变得简单。所以,我在数据库中有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.你能得到吗?我希望有人得到它..
答案 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;}
}