不能从List强制转换为EntityCollection

本文关键字:转换 EntityCollection List 不能 | 更新日期: 2023-09-27 18:10:16

我正在尝试更新entityCollection

这是我的链接:

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.EntityCollection 1[Conduit.Mam.MaMDBEntityFramework.MamConfigurationToBrowser_V1]'.

为什么?当我在做链接到实体时,不是吗?

不能从List强制转换为EntityCollection

您正在创建一个List<MamConfigurationToBrowser_V1>与您的第二个最后调用ToList()在您的Linq表达式,然后您尝试将此列表转换为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>。我不知道你的背景,但是也许你应该考虑使用储存库和工作单元模式。在Google上搜索

ItemFromDB是唯一对象吗?我的意思是,如果itemFromDB不是一个列表,你是在尝试将一个唯一对象转换为一个列表。

代替。tolist (). asenumerable()你可以尝试使用。firstordefault ().