我在SQL数据库中有两个表Team_DATA和Driver_PROFILE_DATA。对于每个driver_profile,可以有很多团队。
因此,driver_profile与team_data表之间存在一对多的关系。我想将已存在记录的Driver_profile表中的team_data外键引用更新为已存在的另一个team_data记录。
我想使用实体框架来做这件事。这就是我想要的:拥有一个可供选择的团队列表,在team_data表中查找记录并在driver_profile中适当更新它的FK。
因此,在下面的代码中,传递的参数是team_data表中新选择的团队。
现在我需要它在Driver_profile表中更新它的FK引用。
这就是我所拥有的:
更新:代码已更新。即使我调用savechanges,它也不会将其保存到数据库中。没有错误。
public Driver_PROFILE_DATA GetSelectedTeam(string team)
{
ObjectQuery<Team_DATA> td = raceCtxt.Team_DATA;
ObjectQuery<Driver_PROFILE_DATA> drpr = raceCtxt.Driver_PROFILE_DATA;
var selteam = from t in td where t.Team_Name == team select t;
Team_DATA newteam = new Team_DATA();
newteam = selteam.Select(x => x).First();
// get driver_profile with associated team_data
var data = from a in raceCtxt.Driver_PROFILE_DATA.Include("Team_DATA") select a;
// put it in driver_profile entity
profileData = data.Select(x => x).First();
profileData.Team_DATAReference.Attach(newteam);
return profileData;
}
答案 0 :(得分:1)
实体框架应该为您提供两个类之间的良好关联,像使用POCO一样更新引用,并远离ID值。
类似的东西:
newTeam.Profile.Teams.Remove(profileData); // separate from old Profile
profileData.Teams.Add(newTeam);
我做了一点测试,设置对父对象的引用就足够了:
newTeam.Profile = profileData;