【发布时间】:2015-11-12 19:08:53
【问题描述】:
我正在尝试删除一行数据,但它不允许我删除。我正在使用实体框架。一个玩家可以在一个团队中,但一个团队可以有很多玩家。但我想要做的就是删除一个不属于团队的玩家,我应该可以毫无问题地删除它,
我正在使用 EF5 和 asp.net 4 网络表单
protected void grdSoccerPlayers_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
GridDataItem item = e.Item as GridDataItem;
Guid strId = new Guid(item.GetDataKeyValue("id").ToString());
player _player = _dal.GetPlayerBYID(strId);
_dal.SoccerEntities.AddToplayers(_player);
_dal.SoccerEntities.DeleteObject(_player);
_dal.SoccerEntities.SaveChanges();
grdSoccerPlayers.DataBind();
grdSoccerPlayers.Rebind();
}
}
使用以下 linq 语句填充网格。
public IQueryable<player> getAllPlayers()
{
var _player = SoccerEntities.players.ToList();
return _player.AsQueryable();
}
然而,这个外键放在 player 表中的 teamID 上,将它链接到 obv 团队表。但是我应该仍然可以删除一个玩家,我不应该。?但是,当我去删除一个团队时,该代码可以正常工作,但当我只想删除一个玩家时却不行。我怎么能克服这个。
当我删除 addtoplayers 时出现以下错误
System.InvalidOperationException:无法删除该对象,因为它在 ObjectStateManager 中找不到。在 System.Data.Objects.ObjectContext.DeleteObject(Object entity, EntitySet expectedEntitySet) at System.Data.Objects.ObjectContext.DeleteObject(Object entity) at UniteCms.BackDoor.players._default.grdSoccerPlayers_ItemCommand(Object sender, GridCommandEventArgs e) in c :\新代码\UniteCms\UniteCms\UniteCms\BackDoor\players\default.aspx.cs:第83行
然后我尝试使用以下方法解决它
Entity Framework Delete Object Problem
但它给出了以下错误。
Entity Framework Delete Object Problem
System.InvalidOperationException:具有空 EntityKey 值的对象不能附加到对象上下文。在 System.Data.Objects.ObjectContext.Attach(IEntityWithKey entity) 在 UniteCms.BackDoor.players._default.grdSoccerPlayers_ItemCommand(Object sender, GridCommandEventArgs e) 在 c:\new code\UniteCms\UniteCms\UniteCms\BackDoor\players\default。 aspx.cs:第 83 行
【问题讨论】:
-
你的例外是什么?
-
@hellogoodnight 记录也不例外,只是根本没有删除
-
@RameshBabu 认为这不起作用
-
@RameshBabu 你没有建议什么代码!
-
我要求发布您为
DeleteObject方法编写的代码
标签: c# asp.net entity-framework linq