0

저는 Stored procedure를 만들기 위해 엔티티 프레임 워크와 Codefirst를 사용하고 있습니다. 필자가 지적했듯이 SP를 만들려면 패키지 관리자에서 몇 가지 단계를 수행해야합니다.코드에서 update-database가 작동하지 않습니다.

1 - SP를 만들 마이그레이션에게

2 추가 마이그레이션 MyClass에

3 업데이트를 데이터베이스

Myclass(new created)에 내가 UP 내 SP 코드를 작성

() 메소드를 할 수 있습니다. 잘 작동합니다! 하지만 SP를 변경하고 update-database를 다시 실행하면 작동하지 않으며 새로운 MYclass2를 생성하기 위해 다른 추가 마이그레이션 명령을 수행해야합니다. 그게 맞습니까? 내가 추가 마이그레이션을 작성해야 할 때마다 의미합니까?

이 내가 업데이 트 데이터베이스를 다시 실행 결과 내가 SQL 쿼리로 변경하는 경우에도 "No pending explicit migration"

때 "알터 절차를 ...."그것이 작동하지 않는 mycode

public override void Up() 
     { 
      Sql(@"Create procedure testSp 
         as 
select std.Id as stdName, std.Name as MajorName, mj.Name from dbo.Students as std 
inner join dbo.Majors as mj on std.Id = mj.Id 
"); 
     } 

     public override void Down() 
     { 
      Sql("drop procedure testSp"); 
     } 

입니다, 변화는 일어나지 않습니다. 감사

이 시나리오를 고려 편집을 할

, 나는 "... 저장 프로 시저 tespSP2를 변경" 그래서 내가하는 쿼리를 변경해야 내 SP 이름 (단지 예)를 변경하려면 또는 다른 변경 사항을 추가 마이그레이션을 다시 실행해야합니까 ?? 또는 update-database는 그것을하기로되어 있습니까? 엔티티 프레임 워크 마이그레이션에

+0

여기에서 설명하는 다양한 기술은 [https://stackoverflow.com/questions/7667630/can-you-create-sql-views-stored-procedure-using-entity-framework-4-1-code- 전나무). –

답변

1

, 당신은

[이하지 않는 것이 좋습니다이 테이블의 마지막 행을 삭제하거나 다음 명령을 실행 취소/

Update-Database -TargetMigration:MigrationsName

를 롤백 (rollback)을 사용할 수있는 _migrationHistory 테이블에 추가 use update-database -force

+0

그럼이 코드가 끝나면 어떻게됩니까? 내 storePr 쿼리를 변경하려는 경우 단계별로 어떻게해야합니까? –

+0

다른 마이그레이션을 추가하고 거기에서 코드를 변경할 수 있습니다. 가장 좋은 방법은 입니다. 프로덕션 환경에 있지 않으면 수동으로 수행 할 수 있습니다. 먼저 _migrationHistory 테이블의 마지막 행을 제거한 다음 update-database 명령을 실행하면 마지막 마이 그 레이션 – Saeed

+0

으로 데이터베이스를 업데이트해야하지만 코드를 사용할 때 먼저 SQl 서버와 테이블에 액세스하지 않아야합니다. 업데이트 데이터베이스가 자동으로 수행해야한다고 생각했습니다. 그래서 ther는 이주에 관해 어떤 REwirte도 아니다, 나는 바르게있다? 새로운 마이그레이션을 만들어야 할 때마다 –