Sql server 实体框架查询映射问题

Sql server 实体框架查询映射问题,sql-server,asp.net-mvc,entity-framework,asp.net-web-api,Sql Server,Asp.net Mvc,Entity Framework,Asp.net Web Api,我遇到了一个奇怪的问题,EF实体生成了一个不正确的查询,而该查询正在生成反映导航属性映射的列。但是,我已经删除了这些导航属性,查询仍然会生成相关列。 有关实体如下所示 [Table("Order")] public partial class Order { public int OrderId { get; set; } public int? OrderCampaignIDlink { get; set; } public int? OrderI

我遇到了一个奇怪的问题,EF实体生成了一个不正确的查询,而该查询正在生成反映导航属性映射的列。但是,我已经删除了这些导航属性,查询仍然会生成相关列。 有关实体如下所示

[Table("Order")]
public partial class Order
{

    public int OrderId { get; set; }
    public int? OrderCampaignIDlink { get; set; }
    public int? OrderItemIDlink { get; set; }
    [Column(TypeName = "date")]
    public DateTime? OrderDateAdded { get; set; }
    public int? OrderStatusIDlink { get; set; }
    public int? OrderSupplierIDlink { get; set; }
}
public class Campaign
{
    public Campaign()
    {
        Orders = new HashSet<Order>();
    }

    public virtual ICollection<Order> Orders {get;set; }
}
它通过
DbContext
的子类映射

public partial class Entities3 : DbContext
{
    public Entities3() : base("name=Entities3")
    {
        Configuration.LazyLoadingEnabled = false;
    }


    public virtual DbSet<Order> Orders { get; set; }


    protected override void OnModelCreating(DbModelBuilder modelBuilder){...}
 }
最后,下面是SQL Server Profiler报告的生成查询

SELECT 
[Extent1].[OrderId] AS [OrderId], 
[Extent1].[OrderCampaignIDlink] AS [OrderCampaignIDlink], 
[Extent1].[OrderItemIDlink] AS [OrderItemIDlink], 
[Extent1].[OrderDateAdded] AS [OrderDateAdded], 
[Extent1].[OrderStatusIDlink] AS [OrderStatusIDlink], 
[Extent1].[OrderSupplierIDlink] AS [OrderSupplierIDlink], 
[Extent1].[Campaign_CampaignId] AS [Campaign_CampaignId], 
[Extent1].[Company_CompanyId] AS [Company_CompanyId], 
[Extent1].[OrderStatus_OrderStatusId] AS [OrderStatus_OrderStatusId]
FROM [dbo].[Order] AS [Extent1]
如您所见,
select
查询中有一些列根本没有映射。正如查询中反映的那样,我以前有一些导航属性,但我已经将它们注释掉了

我尝试过的事情
  • 刷新internet浏览器(Ctrl+F5)
  • 正在IIS中停止、重新启动应用程序池

任何帮助都将不胜感激

我想我会把答案留在这里,以备将来参考。事实上,这个问题相当简单和愚蠢。我忘了删除关系另一端对订单的引用。也就是说,我有一个
活动
实体,它仍然持有对
订单
实体的引用,如下所示

[Table("Order")]
public partial class Order
{

    public int OrderId { get; set; }
    public int? OrderCampaignIDlink { get; set; }
    public int? OrderItemIDlink { get; set; }
    [Column(TypeName = "date")]
    public DateTime? OrderDateAdded { get; set; }
    public int? OrderStatusIDlink { get; set; }
    public int? OrderSupplierIDlink { get; set; }
}
public class Campaign
{
    public Campaign()
    {
        Orders = new HashSet<Order>();
    }

    public virtual ICollection<Order> Orders {get;set; }
}
公开课活动
{
公众运动()
{
Orders=新HashSet();
}
公共虚拟ICollection订单{get;set;}
}

与拥有
订单
实体集合的
公司
实体相同。EF希望
订单
实体上存在外键关系。删除该属性(以删除关系)或使用相应的外键将相应的
活动
公司
导航属性添加到
订单
实体(以反映适当的一对多关系)应该消除错误。

此代码中的内容:protected override void OnModelCreating(DbModelBuilder modelBuilder){…}您是否尝试过在项目中“查找”至少可能引用其中一列的位置?我猜它们是在其他地方被嵌入到你的物体中的。正如建议的那样,您可以发布ModelCreating事件代码吗?我不想让问题太过广泛,但忘了提到我删除了ModelCreating上的所有引用。现在,我已经发现了这个问题,稍后我会为来自谷歌的任何人发布答案,谢谢大家