这是我正在使用的基本模式的精简示例。我意识到这个例子很复杂,但有一些原因正在使用这个模式,这对于描述我看到的问题并不重要。另外值得注意的是:我使用的是数据库优先。团队(表)ID名称球员(表)IdTeamId年份姓名职位比赛(表)Id日期HomeTeamId客场TeamIdGameHomePlayer_VW (View)GameId(在 EDMX 中定义为 PK)HomePlayerId视图 GameHomePlayer_VW 定义为:SELECT Game.Id, Player.IdFROM GameLEFT OUTER JOIN PlayerON Game.HomeTeamId = Player.TeamId AND YEAR(Game.Date) = Player.Year(如果你很好奇还有一个 GameAwayPlayer_VW :))Game和之间的 EDMX 关联GameHomePlayer_VW:Referential Constraint Game -> GameHomePlayer_VWEnd1 Multiplicity 0..1 (Zero or One of GameHomePlayer_VW)End1 Navigation Property GameEnd1 OnDelete NoneEnd1 Role Name GameHomePlayer_VWEnd2 Multiplicity 1 (One of Game)End2 Navigation Property GameHomePlayer_VWEnd2 OnDelete NoneEnd2 Role Name GameName GameHomePlayer_VWGameGame和GameHomePlayer_VW由 EF 生成的类:public partial class Game{ public int Id { get; set; } public DateTime Date { get; set; } public Nullable<int> HomeTeamId { get; set; } public Nullable<int> AwayTeamId { get; set; } public virtual Team HomeTeam { get; set; } public virtual Team AwayTeam { get; set; } public virtual GameHomePlayer_VW GameHomePlayer_VW { get; set; } public virtual GameAwayPlayer_VW GameAwayPlayer_VW { get; set; }}public partial class GameHomePlayer_VW{ public int GameId { get; set; } public Nullable<int> PlayerId { get; set; } public virtual Game Game { get; set; } public virtual Player Player { get; set; }}我遇到的问题是,当我尝试使用 EF 删除游戏实体时,收到以下错误:无法更新 EntitySet 'GameHomePlayer_VW',因为它有一个 DefiningQuery 并且<DeleteFunction>元素中不存在<ModificationFunctionMapping>支持当前操作的元素。还有其他实体引用游戏并使用级联删除被删除。我尝试使用这篇文章中的解决方案没有成功:无法更新 EntitySet - 因为它有一个 DefiningQuery 并且不存在 <UpdateFunction> 元素我还尝试连接一个存储过程,该过程采用 EDMX 定义的 PK 并返回 0。我尝试初始化我的 DbContext 类的新实例以删除它,如下所示,但仍然遇到同样的问题。在允许添加/更新/删除引用它的实体的同时,是否有人对维护基于游戏日期的动态链接有任何建议?
1 回答
- 1 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消