asp.net-mvc – ASP.NET MVC / EF4 / POCO /存储库 – 如何更新
评论与建议书之间有1 .. *的关系.
我的模型的相关部分(也是EF4映射的POCO): public class Review { public ICollection<Recommendations> Recommendations { get; set; } } 在编辑视图中,我将建议视为一组复选框. 当我尝试添加一个新的建议书作为编辑审查的一部分(例如,检查另一个框),没有任何事情发生 – 我知道为什么… 我使用“stub技术”更新我的实体 – 例如我创建一个具有相同键的实体,将其附加到图形,然后执行ApplyCurrentValues.但这只适用于标量属性,而不适用于导航属性. 我发现this StackOverflow question看起来不错,但我正在努力解决如何使它与POCO / Repository(和ASP.NET MVC – 分离的上下文)一起使用. 因为我正在使用POCO,请查看.建议是ICollection<建议>所以我不能做评论.建议.我还没有使用自我跟踪实体,所以我需要手动使用图表/变更跟踪 – 直到现在还没有问题. 所以你可以可视化的场景: 评论: >建议书(ICollection<建议书): >推荐(推荐) 如果在编辑视图中显示,则已选中其中两个复选框.第三个(代表“建议三”)是未经检查的. 但如果我检查那个盒子,上面的模型变成: 评论: >建议书(ICollection<建议书): >推荐(推荐) 因此,我需要将“建议三”作为新实体附加到图表中. 我需要隐藏的字段来比较现有实体发布的数据吗?还是应该将实体存储在TempData中,并将其与发布的实体进行比较? 编辑 为了避免混淆,这里是完整的应用程序堆栈调用: ReviewController [HttpPost] public ActionResult Edit(Review review) { _service.Update(review); // UserContentService _unitOfWork.Commit(); } UserContentService public void Update<TPost>(TPost post) where TPost : Post,new() { _repository.Update(post); // GenericRepository<Post> } GenericRepository – 用作GenericRepository< Post> public void Update<T2>(T2 entity) where T2 : class,new() { // create stub entity based on entity key,attach to graph. // override scalar values CurrentContext.ApplyCurrentValues(CurrentEntitySet,entity); } 因此,根据新的/修改/删除,需要为每个建议调用更新(或添加或删除)存储库方法. 解决方法
也许我需要更多的上下文,但是出了什么问题:
recommendations.Add(newRecomendation) ? 回覆评论: 好的,怎么了? SomeServiceOrRepository.AddNewRecommendation( newRecommendation ) 要么 SomeServiceOrRepository.AddNewRecommendation( int parentId,newRecommendation ) 最后一句话你是说两个问题? 这不应该很难. 总结一下我的答案,我认为你正在做的事情是“艰难的方式”,并且应该专注于发布与您尝试完成的CRUD动作相对应的表单值. 如果一个新的实体可以与编辑的实体同时进入,那么您应该将它们前缀不同,以便模型绑定器可以在其上接收.即使有多个新项目,您可以使用相同的[0]语法在“名称”字段的前面加上新的或某些东西. 在这种情况下很多次,您不能依赖于实体框架的图形功能,因为从集合中删除实体从未意味着应将其设置为删除. 如果表单是不可变的,您还可以尝试使用ObjectSet中的生成的附加函数: theContect.ObjectSet<Review>().Attach( review ) 多出这个方法.也许你可以发布你的控制器和查看代码? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用Moq查找DbSet(EntityFramework.Testing
- asp.net-mvc – 在使用ModelBinder之前更改文化
- asp.net-mvc – ASP.NET MVC应用程序中的“坏二进制签名”
- asp.net-mvc-3 – RoleProvider不能与服务器上的自定义IIde
- asp.net-mvc-3 – 单元测试一个文件上传,怎么样?
- asp.net-mvc-4 – 如何从asp.net mvc 4中的空Web应用程序模
- asp.net-mvc – Umbraco Surface Controller或RenderMvcCon
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- asp.net-mvc – ASP.NET MVC4 CustomErrors DefaultRedirec
- .net – 有没有办法在Crystal Reports中渲染LaTeX方程?
- asp.net-mvc – 使用自定义[required]属性时使用
- asp.net-mvc-5 – 使用Fluent迁移器将初始行添加
- asp.net – Web.config文件中的appSettings和con
- asp.net-mvc – ASP.NET MVC中的动态范围验证2
- asp.net – Windows应用程序与Web应用程序开发
- [译]ASP.NET Core 2.0 路由引擎详解
- 如何让ASP.NET MVC为EF中的外键生成字段
- asp.net – 在页面刷新时再次触发GridView_RowCo
- 【DevExpress v17.2新功能预告】增强ASP.NET Tre
- asp.net-mvc – 如何设置内联的webgrid行样式