2014-02-13 2 views
1

첫 번째 Foray를 Code First로 만듭니다. 대부분의 테이블이 정상적으로 작동하지만 Bids라는 테이블을 쿼리 할 때 '잘못된 열 이름 Company_CompanyID'가 나타납니다.Entity Framework 코드 첫 번째 잘못된 열 이름 Company_CompanyID

작은 샘플 응용 프로그램에서 데이터베이스를 리버스 엔지니어링 할 때이 오류가 발생하지 않습니다. 필자는 Bid 클래스와 샘플 애플리케이션에서 실제 애플리케이션으로의 매핑을 비교해 보았지만 차이점을 발견 할 수 없었다.

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 : 내 실제 응용 프로그램에서 입찰 쿼리에 대해 생성 된 SQL은 다음과 같습니다. 어떤지도가 Company_CompanyID으로 매핑되는지 알아 내려고 시도하는 방법을 모르겠습니다. 어떤 사람이 그게 무슨 뜻인지 알아내는 방법에 대한 조언을 해줄 수 있습니까? Company_CompanyID? 정말 고마워!

답변

1

이것은 Foreign Key 열로, 입찰가 테이블의 행을 회사 테이블의 행과 연결하는 데 사용됩니다. 기본적으로 Entity Framework에서는 외래 키 이름 생성에 다음과 같은 패턴을 사용합니다.

{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 
관련 문제