【发布时间】:2012-04-09 02:46:00
【问题描述】:
我有一个带有 Microsoft Datagrid 的 VS11 beta WPF 应用程序,该应用程序基于 Entity Framework 5.0b2 模型(来自 sql server 数据库)中的表。 (网格使用通过从实体框架模型添加数据源并将表从该模型拖放到设计图面而自动生成的任何代码。)。然后,我使用 EF5.0 DBContext 代码生成器插件来生成可以在应用程序中使用的 DbContext 类型。
结果并不好。我得到一个似乎无法修复的编译错误;至少我的尝试让事情变得更糟。数据网格不喜欢 DbContext 并且不与它共存(当数据网格和 DbContext 都基于相同的数据库和表时)。是否有解决方法,可能是通过更改代码生成器模板?
错误信息粘贴在最后。感谢您对此的任何帮助或见解。
(请注意以下密切相关的帖子不是答案,因为虽然我可以将 dbcontext 转换为 objectcontext,但我无法让 datagrid 正常使用它;如果我将 objectcontext 转换为 dbcontext,我不会t 具有自动生成的 dbcontext 类型: Convert DBContext to ObjectContext for use with GridView)。我正在寻找一个相当简单的解决方法——如果我开始手动编码所有类型和转换,我确信有一个解决方法,但我想保持使用自动生成代码的易用性——我不想被占用代码生成器可以而且应该这样做。如果没有解决方案,我想我会将控件基于 ado.net,并将实体框架留给非 ui 代码。
错误
无法隐式转换类型
'System.Data.Entity.DbSet' 到
'System.Data.Objects.ObjectQuery'
Documents\Visual Studio 11\Projects\WpfApplication3\WpfApplication3\MainWindow.xaml.cs
导致错误的行(由 Microsoft 拖放以 EF 表为源的数据网格创建): System.Data.Objects.ObjectQuery myTblsQuery = myDbsEntities.MyTbls;
【问题讨论】:
-
我认为这可能与 EF 不支持手动编译查询有关。但这只是猜测
-
两边都有实体框架(有两个不同的api),datagrid控件使用的是object context api,不支持dbcontext api。存在冲突,因为这些 orm 框架中的整个约定是使用类型的实际对象名称;如果不是针对具有两个 api 的相同 orm (EF) 的这种奇怪情况,这是足够合理的。应该有一个简单的解决方案...
标签: wpf entity-framework wpfdatagrid visual-studio-2012 entity-framework-5