我正在使用 Entity Framework 5,并且正在尝试删除没有主键的实体。我的意思是我的表甚至没有主键。
场景如下:
我有 3 个表,其流程如下:
MainTeam -> UserPerTeam <- 用户
我的 Mainteam 表的主键 ID 与表 UserPerTeam 中的 MainTeamID 相关。
我的用户表具有与表 UserPerTeam 中的用户 ID 相关的主键 ID。
UserPerTeam 具有这两个关系以及该表中需要的一些其他字段。
所以现在当我使用以下代码时,我的实体框架会因为它没有主键而中断:
var upt = new FighterPerTeam { UserID = userId, TeamID = teamId };
Entities.UserPerTeam.Attach(upt);
Entities.UserPerTeam.Remove(upt);
Entities.SaveChanges();
所以现在我得到了全能的错误:
无法更新 EntitySet 'UserPerTeam',因为它有一个 DefiningQuery 并且元素中不存在支持当前操作的元素。
我只是想知道如何解决这个问题是一种安全的方法。我知道我可以使用以下代码,但我真的不喜欢使用它,因为它似乎不是实体框架。
var cmd = ("Delete from UserPerTeam where userID = " + userId + " and teamId = " + teamId);
Entities.Database.ExecuteSqlCommand(cmd);
几乎忘了提到我正在使用延迟加载,并且我只想删除 UserPerTeam 表中的实体。如果您的解决方案还删除了 MainTeam 或 User 对象,那么我将无法使用它。
我欢迎所有建议。