我想更新一个entityCollection
这是我的linq:
itemFromDb.MamConfigurationToBrowser_V1 =
(EntityCollection<MamConfigurationToBrowser_V1>) itemFromDb.MamConfigurationToBrowser_V1
.Select(browserEfItem =>
FillFromUi(browserEfItem,
item.MamConfigurationToBrowser_V1
.Single(browserUiItem => browserUiItem.BrowserVersionId == browserEfItem.BrowserVersionId)))
.ToList().AsEnumerable();但是,我得到了一个运行时转换错误:
无法转换'System.Collections.Generic.List
1[Conduit.Mam.MaMDBEntityFramework.MamConfigurationToBrowser_V1]' to type 'System.Data.Objects.DataClasses.EntityCollection1Conduit.Mam.MaMDBEntityFramework.MamConfigurationToBrowser_V1'.类型的对象
为什么会这样呢?就像我对实体做的一样,不是吗?
发布于 2013-04-21 08:23:49
您正在使用Linq表达式中的第二次调用List<MamConfigurationToBrowser_V1>创建一个ToList(),然后尝试将此列表转换为一个EntityCollection<MamConfigurationToBrowser_V1。我建议创建一个新的EntityCollection,并将来自LINQ查询的结果添加到这个集合中,如下所示:
var collection = new EntityCollection<MamConfigurationToBrowser_V1>();
var processedItems = itemFromDb.MamConfigurationToBrowser_V1
.Select(browserEfItem =>
FillFromUi(browserEfItem,
item.MamConfigurationToBrowser_V1
.Single(browserUiItem => browserUiItem.BrowserVersionId == browserEfItem.BrowserVersionId)))
.ToList();
foreach(var item in processedItems)
{
collection.Add(item);
}重要:--您的代码似乎将数据库问题与业务逻辑结合在一起--而且我个人从未在代码中直接使用EntityCollect<T>。我不知道您的上下文,但也许您应该考虑使用Repository和Unit模式。在谷歌上搜索。
发布于 2013-04-21 09:02:56
ItemFromDB是唯一的对象吗?我的意思是,如果itemFromDB不是一个列表,那么yo正在尝试将一个唯一的对象转换为一个列表。
您可以尝试使用.ToList().AsEnumerable()代替.FirstOrDefault()。
https://stackoverflow.com/questions/16129189
复制相似问题