好的!
我不得不说这两种技术都很棒。虽然似乎有些东西我不明白。
您的数据库中有一个数据(假设您想显示一个表中的数据,该表具有对其他表的引用)。
我有一个带有 List 或 IEnumerable 或 IQueryable 或其他任何东西的模型......
因此,在我看来,我想通过对象列表进行 foreach 并利用对其他表的引用的酷特性。当您在控制器中时,控制器没有问题
using (var datatabse = new MyEntity)
{
}
但是当您停止使用 db has 已处理时,您会遇到常见错误 ObjectContext 实例已被处理,不能再用于需要连接的操作。
所以我没有看到其他选项作为在内存中创建实体对象的副本......但是你失去了所有很酷的 EF4 引用,你必须首先在你的模型中手动加载数据,然后使用 foreach 在视图上显示它。
所以代替 List<(EF4Type)> 或 IEnumerable<(EF4Type)> 或 IQueryable<(EF4Type)>
您必须执行 List<(MyCustomHelperClass)> 其中 MyCustomHelperClass 表示具有与实体对象类似的属性的类,并且可能还有一些额外的因为您无权访问引用表的属性然后您必须执行 foreach 并将数据加载到此 List 和Razor 视图上的另一个@foreach 显示所有内容。
两倍的工作量,如果项目很大……您可以更全面地了解您需要多少个 helperClass。所有这些很酷的新技术真的要以这种方式使用吗?....或者我错过了什么。