我正在尝试将继承类型的IEnumerable转换为基类的IEnumerable。
已尝试如下:
var test = resultFromDb.Cast<BookedResource>();
return test.ToList();但犯了错误:
不能转换这些类型。Linq到实体只支持转换基元EDM-类型。
所涉及的课程如下:
public partial class HistoryBookedResource : BookedResource
{
}
public partial class HistoryBookedResource
{
public int ResourceId { get; set; }
public string DateFrom { get; set; }
public string TimeFrom { get; set; }
public string TimeTo { get; set; }
}
public partial class BookedResource
{
public int ResourceId { get; set; }
public string DateFrom { get; set; }
public string TimeFrom { get; set; }
public string TimeTo { get; set; }
}
[MetadataType(typeof(BookedResourceMetaData))]
public partial class BookedResource
{
}
public class BookedResourceMetaData
{
[Required(ErrorMessage = "Resource id is Required")]
[Range(0, int.MaxValue, ErrorMessage = "Resource id is must be an number")]
public object ResourceId { get; set; }
[Required(ErrorMessage = "Date is Required")]
public object DateFrom { get; set; }
[Required(ErrorMessage = "Time From is Required")]
public object TimeFrom { get; set; }
[Required(ErrorMessage = "Time to is Required")]
public object TimeTo { get; set; }
}我试图解决的问题是从表HistoryBookedResource中获取记录,并使用实体框架和LINQ在IEnumerable<BookedResource>中获得结果。
更新:
当使用下面的转换接缝来工作时,但是当试图用预测循环时,数据就会丢失。
resultFromDb.ToList() as IEnumerable<BookedResource>;更新2:
Im使用实体框架生成的模型,模型( edmx )是从数据库创建的,edmx包含表示数据库表的类。
在数据库中,我有一个旧BookedResource的历史表,用户可能希望查看这些表,并从数据库实体框架中获取旧数据,使用与表同名的类从db接收数据。因此,我从表HistoryBookedResource接收HistoryBookedResource类中的数据。
因为实体框架使用属性生成部分类,所以我不知道是否可以将它们变为虚拟类并覆盖它们。
如有任何建议,将不胜感激。
发布于 2013-11-01 20:26:21
通常在这种情况下使用AsEnumerable:
var test = resultFromDb.AsEnumerable().Cast<BookedResource>();这样做的好处是没有一次列举整个结果(你不会放松懒惰)。
发布于 2013-11-01 20:21:39
试着:
resultFromDb.AsEnumerable().Cast<BookedResource>();https://stackoverflow.com/questions/19734739
复制相似问题