Asp.net mvc 主/细节:用IEnumerable和IQueryable铸造和装订

Asp.net mvc 主/细节:用IEnumerable和IQueryable铸造和装订,asp.net-mvc,linq,entity-framework,asp.net-mvc-4,linq-to-entities,Asp.net Mvc,Linq,Entity Framework,Asp.net Mvc 4,Linq To Entities,我有以下通过linq查询填充的主/详细场景: Public Class MasterDto Public Property ANYMASTERVALUE1 As String Public Property DETAILDTO() As IEnumerable(Of DetailDto) End Class Public Class DetailDto Public Property ANYDETAILVALUE1 As

我有以下通过linq查询填充的主/详细场景:

    Public Class MasterDto
        Public Property ANYMASTERVALUE1 As String
        Public Property DETAILDTO() As IEnumerable(Of DetailDto)
    End Class

    Public Class DetailDto
        Public Property ANYDETAILVALUE1 As String
        Public Property ANYDETAILVALUE2 As String
    End Class

    Dim query = From a In db.TABLE1
                Select New MasterDto With {
                  .ANYMASTERVALUE1 = a.ANYMASTERVALUE1,
                  .DETAILDTO = From b In db.TABLE2
                               Where a.ID = b.ID
                               Select New MasterDto With {
                                 .ANYDETAILVALUE1 = b.ANYDETAILVALUE1,
                                 .ANYDETAILVALUE2 = b.ANYDETAILVALUE2
                                }
                }
第一个问题

当查询多个记录,然后尝试调用一个
query=query.toList
时,我得到以下错误:

无法将类型“System.Linq.IQueryable”1强制转换为类型“System.Collections.Generic.IEnumerable”1。LINQ to实体仅支持强制转换EDM基元或枚举类型

但是,当我将
公共属性DETAILDTO()更改为IEnumerable(Of DETAILDTO)
时,一切正常

有没有办法使用IEnumerable(Of…)因为如果我不能使用它,我会遇到第二个错误

第二个问题

我可以用IQueryable,但是我遇到了第二个问题。 我扩展查询以获取单个记录
,其中a.ID=123
,然后使用视图显示主数据,并使用Html.EditorFor模板显示详细数据,如下所示:

看法

当我在主DTO中将
公共属性DETAILDTO()用作IEnumerable(Of DETAILDTO)
时,在HttpPost(klicking the save button)上出现以下异常:

System.MissingMethodException:无法创建接口的实例

当我使用
Public Property DETAILDTO()作为IEnumerable(Of DETAILDTO)
时,模型(主数据和详细数据)将正确绑定并返回到conroller


我希望您能看到我的困境并找到解决方案?

您应该使用集合或列表。活页夹无法实现接口,可能是因为他可以决定使用哪种类型。谢谢,但这仍然会给我带来
LINQ to Entities仅支持强制转换EDM基元或枚举类型的错误,当返回问题1中提到的多个记录时,是否存在模型中未定义关联的原因?我不是舒尔,你是什么意思?
@ModelType MvcApp.MasterDto
@Using Html.BeginForm()
    @Html.ValidationSummary(True)
        @Html.DisplayFor(Function(model) model.ANYMASTERVALUE1)
        @Html.EditorFor(Function(model) model.DETAILDTO)
        <input type="submit" value="Save" />
End Using
@ModelType MvcApp.PostMedienDto
    @Html.DisplayFor(Function(model) model.ANYDETAILVALUE1)
    @Html.DisplayFor(Function(model) model.ANYDETAILVALUE2)