C# 使类型可浇铸到另一个

C# 使类型可浇铸到另一个,c#,linq,entity-framework,casting,C#,Linq,Entity Framework,Casting,我有一个由实体框架生成的实体类 然后,我创建了我的自定义POCO类,该类与我用作asp.net mvc应用程序的viewmodel的实体类几乎相同 有没有办法使实体类可转换为POCO类 我问是因为我需要这样的东西: db.Accounts.Cast<ViewModels.AccountVM>() db.Accounts.Cast() 与此相反: db.Accounts.ToList<ViewModels.AccountVM>() db.Accounts.ToList

我有一个由实体框架生成的实体类

然后,我创建了我的自定义POCO类,该类与我用作asp.net mvc应用程序的viewmodel的实体类几乎相同

有没有办法使实体类可转换为POCO类

我问是因为我需要这样的东西:

db.Accounts.Cast<ViewModels.AccountVM>()
db.Accounts.Cast()
与此相反:

db.Accounts.ToList<ViewModels.AccountVM>()
db.Accounts.ToList()
节省了几个数据库周期


感谢您的洞察力

您是否实际使用过EF生成的类?您是否尝试将显式cast操作符()添加到POCO视图模型中?“我不完全确定它是否会起作用,但值得一试。”@Janime。我当然用。为了坚持。“但它们不适合我的书页。”疯狂的亚拉比安。好提示。我添加了显式cast,编译器不介意,但ef介意。我得到一个运行时错误。它说它只支持转换为原始数据类型。谢谢。如果您使用实体框架生成的类(从EntityObject派生),您将无法在上下文中使用POCO类。这样做的原因是ObjectContext将生成的类映射到concetpual模型中的对象,如果它看到一个它不知道的类型,它将抛出,即使您能够在POCO和非POCO类型之间进行强制转换。有什么理由不将POCO类与EF一起使用吗?这样,你将只有一种类型,你将不必投。。。