Asp.net 使用SQL Server数据存储建模一对多关系的实体框架

Asp.net 使用SQL Server数据存储建模一对多关系的实体框架,asp.net,entity-framework,linq,asp.net-core,Asp.net,Entity Framework,Linq,Asp.net Core,我能得到一些诊断以下问题的帮助吗 IQueryable<MyComponentsViewModel> vcvm = from v1 in pg.MyComponents join item in Items on v1.Item equals item into vc select new MyComponentsVie

我能得到一些诊断以下问题的帮助吗

IQueryable<MyComponentsViewModel> vcvm = from v1 in pg.MyComponents 
                                         join item in Items on v1.Item equals item into vc
                                         select new MyComponentsViewModel 
                                                    {  Cost = item.Cost };

我假设,您需要内部联接,当您执行equals时,您需要使用匹配的列ID来过滤记录,如下所示

IQueryable<MyComponentsViewModel> vcvm = 
    from myComp in pg.MyComponents 
    join item in Items on myComp.ItemId equals item.Id
    select new MyComponentsViewModel {   Cost = item.Cost };

我能让它工作

名为Items的操作之间存在歧义。完全指定解决此问题的命名空间。 此外,我还必须从vc.DefaultIfEmpty中的子项添加语句

我还在努力学习这个的全部语义

IQueryable<MyComponentsViewModel> vcvm = 
    from v1 in pg.MyComponents 
    join item in pg.Items on v1.Item equals item into vc
    from subitem in vc.DefaultIfEmpty()
    select new MyComponentsViewModel {   Cost = subitem.Cost };

这不是与SQL相关的问题。它可能来自依赖关系,因为数据存储是SQL server,需要键入。有更好的标签吗?你有没有试过用谷歌搜索你的错误?是的,它开始喜欢大多数东西,但我发现一篇帖子与此无关。你能提供任何有用的反馈吗?对不起,我很抱歉,谢谢。我认为外键使实体框架能够自动了解关系。
IQueryable<MyComponentsViewModel> vcvm = 
    from v1 in pg.MyComponents 
    join item in pg.Items on v1.Item equals item into vc
    from subitem in vc.DefaultIfEmpty()
    select new MyComponentsViewModel {   Cost = subitem.Cost };