[英]Asp.net How do i delete objects with One To Many using entity framework
我有下表的团队和玩家,其中每个团队有很多玩家,基于 teamId 作为 guid。 如您所见,团队表中的第一行 guid 为空 i 不,它只是一个测试在玩家表中基于 teamID 有两条记录
我使用实体框架的主要问题如何使用实体框架一次性删除团队和球员
正如你所看到的第一条记录
因此,在我的团队网格中,我只是在执行以下操作,但正如您所看到的,这只是抓取团队对象。 Obv 我可以先击中玩家对象,然后先删除它们。
if (e.CommandName == "Delete")
{
GridDataItem item = e.Item as GridDataItem;
Guid strId = new Guid(item.GetDataKeyValue("id").ToString());
team _team= _dal.GetTeamByTeamId (strId);
_dal.SoccerEntities.teams.DeleteObject(team);
}
这是我的 GetTeamByTeamId 函数
public team GetTeamByTeamId(Guid teamId)
{
try
{
if (teamId == Guid.Empty)
{
team _team = new team();
return _team;
}
else
{
var q = SoccerEntities.teams.Where(p => p.id == teamId);
if (q == null)
throw new EntityContextException(string.Format("A team could not be found {0}!", teamId));
else
return q.ToList()[0];
}
}
catch (Exception ex)
{
throw new EntityContextException("GetTeamByTeamId failed.", ex);
}
}
顺便说一下,这是asp.net
编辑
我试过 rankins suggesiton 但在编译时出错
错误 36“soccerCmsDal.team”不包含“players”的定义,并且找不到接受“soccerCmsDal.team”类型的第一个参数的扩展方法“players”(您是否缺少 using 指令或程序集引用?) C:\\新代码\\UniteCms\\UniteCms\\UniteCms\\BackDoor\\teams\\default.aspx.cs 38 54 UniteCms
好的现在我有外键设置它不起作用它给我一个空错误
{
GridDataItem item = e.Item as GridDataItem;
Guid strId = new Guid(item.GetDataKeyValue("id").ToString());
team _team = _dal.SoccerEntities.teams.FirstOrDefault(p => p.id == strId);
if (_team != null)
{
foreach (player _player in _team.players)
{
_dal.SoccerEntities.players.DeleteObject(_player);
}
_dal.SoccerEntities.teams.DeleteObject(_team);
}
_dal.SoccerEntities.SaveChanges();
}
GridDataItem item = e.Item as GridDataItem;
Guid strId = new Guid(item.GetDataKeyValue("id").ToString());
team _team = _dal.SoccerEntities.teams.FirstOrDefault(p => p.id == strId);
if (_team != null)
{
if( _team.players!= null && _team.players.Count>0)
{ var _palayers = _team.players.ToList();
foreach (player _player in _palayers )
{
_dal.SoccerEntities.players.DeleteObject(_player);
}
}
_dal.SoccerEntities.teams.DeleteObject(_team);
}
_dal.SoccerEntities.SaveChanges();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.