Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ,使用Include函数_C#_Entity Framework_Linq_Linq To Sql_Linq To Entities - Fatal编程技术网

C# LINQ,使用Include函数

C# LINQ,使用Include函数,c#,entity-framework,linq,linq-to-sql,linq-to-entities,C#,Entity Framework,Linq,Linq To Sql,Linq To Entities,我正在Visual Studio 2013中使用EF 6。我想代表子表中的外键从父表中获取匹配记录。 我有以下代码行 var record = db.ChannelFees.Include(x =>x.SubSource).ToList(); 这里ChannelFees是子表,其中SubSourceId是来自的外键 子资源(父表) 频道费用等级如下所示: using System; using System.Collections.Generic; public

我正在Visual Studio 2013中使用EF 6。我想代表子表中的外键从父表中获取匹配记录。 我有以下代码行

var record = db.ChannelFees.Include(x =>x.SubSource).ToList();
这里ChannelFees是子表,其中SubSourceId是来自的外键 子资源(父表)

频道费用等级如下所示:

    using System;
    using System.Collections.Generic;

    public partial class ChannelFee
{
    public virtual SubSource SubSource { get; set; }
    public int SubSource_id { get; set; }
    public double Fee { get; set; }
    public int Id { get; set; }
}
以及子资源类

using System;
    using System.Collections.Generic;

    public partial class SubSource
    {
        public int Id { get; set; }
        public string Description { get; set; }
        public string MapName { get; set; }
    }
但我得到了以下例外

指定的包含路径无效。EntityType“FinancialManager.ChannelFee”未声明名为“SubSource”的导航属性

有什么问题吗?

我想应该是:

public virtual ICollection<SubSource> SubSource;
公共虚拟ICollection子资源;
我认为应该是:

public virtual ICollection<SubSource> SubSource;
公共虚拟ICollection子资源;

您可以尝试以下方法:

public partial class ChannelFee
{
    public virtual ICollection<SubSource> SubSource { get; set; } // Just to enable lazy load
    public int Id { get; set; }
    public string Description { get; set; }
    public string MapName { get; set; }
}

public partial class SubSource
{
    public int Id { get; set; }
    public string Description { get; set; }
    public string MapName { get; set; }
    public virtual ChannelFee ChannelFee {get; set; } // Navigation property
}
公共部分类频道费
{
公共虚拟ICollection子资源{get;set;}//仅用于启用延迟加载
公共int Id{get;set;}
公共字符串说明{get;set;}
公共字符串MapName{get;set;}
}
公共部分类子源
{
公共int Id{get;set;}
公共字符串说明{get;set;}
公共字符串MapName{get;set;}
公共虚拟ChannelFee ChannelFee{get;set;}//导航属性
}
通常我还会在上下文中添加一个映射(您可以通过配置属性获得相同的结果)

模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasRequired(t=>t.ChannelFee)
.具有多个(t=>t.子源);
}

您可以尝试以下方法:

public partial class ChannelFee
{
    public virtual ICollection<SubSource> SubSource { get; set; } // Just to enable lazy load
    public int Id { get; set; }
    public string Description { get; set; }
    public string MapName { get; set; }
}

public partial class SubSource
{
    public int Id { get; set; }
    public string Description { get; set; }
    public string MapName { get; set; }
    public virtual ChannelFee ChannelFee {get; set; } // Navigation property
}
公共部分类频道费
{
公共虚拟ICollection子资源{get;set;}//仅用于启用延迟加载
公共int Id{get;set;}
公共字符串说明{get;set;}
公共字符串MapName{get;set;}
}
公共部分类子源
{
公共int Id{get;set;}
公共字符串说明{get;set;}
公共字符串MapName{get;set;}
公共虚拟ChannelFee ChannelFee{get;set;}//导航属性
}
通常我还会在上下文中添加一个映射(您可以通过配置属性获得相同的结果)

模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasRequired(t=>t.ChannelFee)
.具有多个(t=>t.子源);
}

解决此问题的最简单方法是声明名为“SubSource”的导航属性。通过注释

public partial class ChannelFee
{
        [ForeignKey("SubSource_id")]  
        public virtual SubSource SubSource { get; set; }        
        public int SubSource_id { get; set; }     

}

解决此问题的最简单方法是声明名为“SubSource”的导航属性。通过注释

public partial class ChannelFee
{
        [ForeignKey("SubSource_id")]  
        public virtual SubSource SubSource { get; set; }        
        public int SubSource_id { get; set; }     

}

我已经自己解决了这个问题。实际上,EF并没有代表我在SQL中创建的外键约束在模型中生成导航属性,这就是错误发生的原因。
因此,我只是删除了模型并再次添加它。问题已经解决。

我已经自己解决了这个问题。实际上,EF并没有代表我在SQL中创建的外键约束在模型中生成导航属性,这就是错误发生的原因。
因此,我只是删除了模型并再次添加它。问题已解决。

是的,林克:我也编辑了问题。请发送ChannelFee和SubSource课程好吗?如果您使用的是fluent接口映射,也可以使用映射配置。我已经用ChannelFee和SubSource classes@bubiI更新了这个问题,因为我对Entity Framework是新手,所以我实际上不知道还需要做些什么才能得到这个问题。您的问题表明您确实有两个名为
SubSource
的分部类!那是打字错误吗?是的,林克,我也编辑了这个问题。你能发送ChannelFee和SubSource课程吗?如果您使用的是fluent接口映射,也可以使用映射配置。我已经用ChannelFee和SubSource classes@bubiI更新了这个问题,因为我对Entity Framework是新手,所以我实际上不知道还需要做些什么才能得到这个问题。您的问题表明您确实有两个名为
SubSource
的分部类!是打字错误吗?“修饰符“virtual”对此项无效”“放置virtual关键字时发生以下错误”“修饰符“virtual”对此项无效”“放置virtual关键字时发生以下错误”“将最后一个方法(OnModelCreating())放置在何处”“将最后一个方法(OnModelCreating())放置在何处?”?