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 – 在ASP.NET MVC视图中递归
- asp.net-mvc-3 – 在MVC 3实体框架中添加多个到多个链接表的
- 如何杀死会话或会话ID(ASP.NET/C)
- asp.net-mvc – 在ASP.NET MVC中禁用布局?
- asp-classic – 从头开始在Visual Studio 2010中创建经典的
- asp.net-mvc – 从Asp.net MVC发送HTML电子邮件的最佳方式是
- asp.net-mvc – 如何单元测试应用了[Authorize]属性的控制器
- asp.net-mvc-3 – 大量使用ViewBag
- asp.net-mvc-3 – 在DEBUG或Debugger中运行时禁用MVC3中的O
- asp.net – 我可以愚弄HttpRequest.Current.Request.IsLoca
- iis – Perfmon:哪个计数器标识线程正在等待?
- asp.net – UrlRewriting.Net模块IIS7等于Page.U
- asp.net-mvc – mvc默认期限后的会话超时(20分钟
- asp.net-mvc – ASP.NET MVC HandleError不工作(
- ASP.NET MVC中特定于视图的模型?
- IIS 7.0的ASP.NET进程是什么?
- asp.net-mvc – ASP.NET MVC的Windows Azure存储
- ef-code-first – 在WebAPI Controller中序列化E
- asp.net – Visual Studio加载项自动附加到Devel
- asp.net-web-api – 角色提供者/成员?如何在asp
