实体框架代码第一个无效的列名称Company_CompanyID

问题描述:

我正在第一次进入Code First。我的大多数表格工作正常,但在查询名为Bids的表时,我收到了'无效列名称Company_CompanyID'。实体框架代码第一个无效的列名称Company_CompanyID

当我逆向工程我的数据库的一个小示例应用程序,我没有得到这个错误。我已经将示例应用程序的投标类和映射与我的真实应用程序进行了比较,我找不到差异。在我的实际应用中的投标查询生成的SQL是这样的:

SELECT 
    [Extent1].[LockCount] AS [LockCount], 
    [Extent1].[BidID] AS [BidID], 
    [Extent1].[LocaleID] AS [LocaleID], 
    [Extent1].[Description] AS [Description], 
    [Extent1].[FileLocation] AS [FileLocation], 
    [Extent1].[EstimatorContactID] AS [EstimatorContactID], 
    [Extent1].[OwnerContactID] AS [OwnerContactID], 
    [Extent1].[OwnerContactContactID] AS [OwnerContactContactID], 
    [Extent1].[GCContactID] AS [GCContactID], 
    [Extent1].[GCContactContactID] AS [GCContactContactID], 
    [Extent1].[ArchitectContactID] AS [ArchitectContactID], 
    [Extent1].[ArchitectContactContactID] AS [ArchitectContactContactID], 
    [Extent1].[BuilderContactID] AS [BuilderContactID], 
    [Extent1].[BuilderContactContactID] AS [BuilderContactContactID], 
    [Extent1].[DrawingNumber] AS [DrawingNumber], 
    [Extent1].[BidDate] AS [BidDate], 
    [Extent1].[PlanDate] AS [PlanDate], 
    [Extent1].[RevisionDate] AS [RevisionDate], 
    [Extent1].[StartDate] AS [StartDate], 
    [Extent1].[FinishDate] AS [FinishDate], 
    [Extent1].[Address1] AS [Address1], 
    [Extent1].[Address2] AS [Address2], 
    [Extent1].[City] AS [City], 
    [Extent1].[State] AS [State], 
    [Extent1].[PostalCode] AS [PostalCode], 
    [Extent1].[J1] AS [J1], 
    [Extent1].[J2] AS [J2], 
    [Extent1].[J3] AS [J3], 
    [Extent1].[J4] AS [J4], 
    [Extent1].[J5] AS [J5], 
    [Extent1].[J6] AS [J6], 
    [Extent1].[J7] AS [J7], 
    [Extent1].[J8] AS [J8], 
    [Extent1].[PriceIndex] AS [PriceIndex], 
    [Extent1].[Notes] AS [Notes], 
    [Extent1].[Proposal] AS [Proposal], 
    [Extent1].[JobOptions] AS [JobOptions], 
    [Extent1].[LastEstimatedDate] AS [LastEstimatedDate], 
    [Extent1].[IsTemplate] AS [IsTemplate], 
    [Extent1].[Awarded] AS [Awarded], 
    [Extent1].[JobStatus] AS [JobStatus], 
    [Extent1].[LockedByUserID] AS [LockedByUserID], 
    [Extent1].[LockedDate] AS [LockedDate], 
    [Extent1].[RowVersion] AS [RowVersion], 
    [Extent1].[Company_CompanyID] AS [Company_CompanyID] 
    FROM [dbo].[Bids] AS [Extent1] 
    WHERE (([Extent1].[LockedByUserID] = @p__linq__0) AND (NOT ([Extent1].[LockedByUserID] IS NULL OR @p__linq__0 IS NULL))) OR (([Extent1].[LockedByUserID] IS NULL) AND (@p__linq__0 IS NULL)) 

所有在我的出价表中的列在查询中表示,再加上额外的Company_CompanyID。我不知道如何去试图找出映射到Company_CompanyID的东西。有人可以请提供一些指导,说明我可以如何确定Company_CompanyID进来的原因是什么?非常感谢!

这是一个Foreign Key列,用于将Bids表中的行与Companies表中的行连接起来。默认情况下,实体框架使用以下模式来生成外键名称:

{navigationPropertyName}_{primaryKeyPropertyNameOfReferencedEntity} 

即,如果你有实体公司:

public class Company 
{ 
    public int CompanyID { get; set; } 
    // ... 
} 

和竞价它具有导航属性公司:

public class Bid 
{ 
    public int BidID { get; set; } 
    public virtual Company Company { get; set; } 
    // ... 
} 
员工表

然后生成的外键提交的名称看起来像

Company_CompanyID