2011-07-05 3 views
-3

데이터베이스의 이름을 테이블의 이름으로 변경했습니다. 그래서 나는 또한 나의 실체 (Favori에서 FavorisAffaire로)의 이름을 바꾸었다. 성공적으로 컴파일되었습니다. 내 솔루션에비 일관적인 오류 : 잘못된 개체 이름

잘못된 개체 이름 'dbo.FavorisAffaires'

내가 가지고 있지 않습니다 FavorisAffaires : 내 응용 프로그램을 실행할 때하지만 지금, 나는 아래의 오류!

나는 FavorisAffaire (withwith ending s)를 가지고 있습니다. 나는 나의 해결책의 배경에서 뭔가 잘못되었다고 생각한다. 나는 이미 깨끗하게 해본 다음에 재건을 시도하지만 문제는 여전히있다.

아이디어가 있으십니까?

+0

이 작업은 ASP.NET MVC 3과 어떤 관련이 있습니까? 귀하의 질문에 적절하게 태그를 달아주십시오, 귀하의 경우 엔 Entity Framework에 대해 이야기하고 있다고 생각하십니까? –

+0

@ 다린 : ASP.NET MVC3 솔루션입니다. 하지만 당신이 옳다면, 그것은 엔티티 프레임 워크의 문제에 더 특정한 것으로 보입니다. 적절한 태그를 추가했습니다. – Bronzato

+0

모델을 확인 했습니까? VS에서 EDMX를 열고 FavorisAffaire 테이블을 클릭하고 Alt + F4 (속성 열기)를 누릅니다. 속성에는 엔터티 집합 이름 필드가 있습니다. 대부분의 경우 EF는 테이블 이름의 끝에 "S"를 추가하여 복수를 나타냅니다.당신에게 이해가되지 않는다면 "S"를 제거하십시오. – Smudge202

답변

2

EF가 기본적으로 동작하는 방식입니다. 그것은 복수의 이름을 사용합니다. 이 기능을 해제하거나 단일 엔티티를 적절한 테이블에 매핑하도록 강제 할 수 있지만 모두 사용중인 EF 버전에 따라 다릅니다.

편집 :

oops I forgot to mention that I used Entity Framework Code First.

예 당신은 당신의 질문의 매우 중요한 부분을 언급하는 것을 잊었다.

여러 가지 방법이 있습니다.

데이터 주석 :

[Table("FavorisAffaire")] 
public class FavorisAffaire 
{ ... } 

또는 유창 매핑 :

modelBuilder.Entity<FavorisAffaire>() 
      .ToTable("FavorisAffaire"); 

또는 복수화 규칙을 제거

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
(가 기존의 다른 테이블의 매핑을 깰 수 있도록이 글로벌 범위가)

대회를 제거한 후에는 DbSet의 이름을 사용해야합니다. s 단수 :

public DbSet<FavorisAffaire> FavorisAffaire { get; set; } 

표가 복수이어야하므로 간단히 표의 이름을 변경하십시오.

0

Ladislav Mrnka의 대답 외에도 변경 한 후에 데이터베이스를 다시 작성하지 않았다고 가정합니다. 따라서 "코드 우선"은 전에 존재하지 않았던 새로운 엔티티의 테이블 이름을 생성했습니다 (정확히 말하면 "Favoris"라고도 함). 이미 이전 스키마가있는 데이터베이스에 연결하고 데이터베이스를 다시 만들도록 EF를 주문하지 않으면 찾고있는 테이블 (FavoriAffairs)이 존재한다고 가정합니다 (그렇지 않은 경우).

이미 "Favoris"테이블에 데이터가있는 경우 이름을 "FavoriAffairs"로 바꾸거나 그렇지 않으면 코드 첫 번째로 데이터베이스를 다시 만들 것을 제안합니다. 이 작업은 특정 데이터베이스 초기화 프로그램을 설정하는 것으로 수행됩니다. http://davidhayden.com/blog/dave/archive/2011/04/27/DatabaseInitializersEFCodeFirstDatabaseSetInitializer.aspx

관련 문제