微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将EF4.1表类强制转换为派生视图类?

如何解决如何将EF4.1表类强制转换为派生视图类?

| 我使用了Entity Framework,并为我的数据库生成了edmx。生成的模板类代表每个表。我有一个生成的类'Table',从中它已将12个属性中的4个复制到新的接口'ITableModel \'中。
var tables = (from t in db.Tables 
                        orderby t.DateReceived descending
                        select t).Take(100);

var list = tables.AsEnumerable().Cast<ITableModel>().ToList();
您可能会猜到,强制转换会引发invalidcast异常。这里的目标是修剪我需要传递给视图(MVC3)的信息,并创建代表该信息的视图类。从我收集到的信息来看,这是最佳实践,但是我对这种浇铸方法不满意。任何帮助,将不胜感激!     

解决方法

        如果您不需要表中的所有数据,则无需从数据库中传输它们。您可以使用:
public class MyProjection : ITableModel
{
     public int SomeField { get; set; }
     public string SomeField2 { get; set; }
}
并将您的查询称为:
var list =  db.Tables 
              .OrderByDescending(t => t.DateReceived)
              .Take(100) 
              .Select(t => new MyProjection 
                   {
                       SomeField = t.SomeField,SomeField2 = t.SomeField2
                   })
              .ToList();
Cast
仅在覆盖运算符以进行转换时可用,但它需要具体类型,因为运算符必须创建目标类型的实例。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。