0

VSF10에서 MVC4와 함께 코드 첫 번째와 함께 EF5를 사용하고 있습니다.탐색 속성 추가시 EF 5 마이그레이션 업데이트 - 데이터베이스 오류가 발생했습니다.

모델의 경우 ChargeTransaction 모델과 ChargeError 모델이 있습니다. ChargeTransactions -> ChargeError는 1-M 관계입니다. 여기

는 모델 클래스이다

[Table("ChargeTransaction")] 
    public class ChargeTransaction 
    { 
     public int Id { get; set; } 
     public int AccountId { get; set; } 
     public DateTime Created { get; set; } 

     public virtual Account Account { get; set; } 
    } 

    [Table("ChargeError")] 
    public class ChargeError 
    {   
     public int Id { get; set; } 
     public int ChargeTransactionId { get; set; } 

     // adding this line breaks update-database 
     public virtual ChargeTransaction ChargeTransaction {get;set;} 
    } 

나는 ChargeError에 ChargeTransaction 탐색 속성을 추가하고 마이그레이션을 추가 한 다음 업데이트 데이터베이스를 호출 할 때, 나는 다음과 같은 오류 얻을 :

Target database is: 'ChargesInterfaceDashboard' (DataSource: localhost, Provider: System.Data.SqlClient, Origin: Configuration). 
Applying code-based migrations: [201310282228417_stuff 2]. 
Applying code-based migration: 201310282228417_stuff 2. 
ALTER TABLE [dbo].[ChargeError] ADD CONSTRAINT [FK_dbo.ChargeError_dbo.ChargeTransaction_ChargeTransactionId] FOREIGN KEY ([ChargeTransactionId]) REFERENCES [dbo].[ChargeTransaction] ([Id]) ON DELETE CASCADE 
System.Data.SqlClient.SqlException (0x80131904): The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.ChargeError_dbo.ChargeTransaction_ChargeTransactionId". The conflict occurred in database "ChargesInterfaceDashboard", table "dbo.ChargeTransaction", column 'Id'. 
    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 
    at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
    at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) 
    at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 
    at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 
    at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) 
    at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements) 
    at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, Boolean downgrading, Boolean auto) 
    at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration) 
    at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) 
    at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) 
    at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() 
    at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() 
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.ChargeError_dbo.ChargeTransaction_ChargeTransactionId". The conflict occurred in database "ChargesInterfaceDashboard", table "dbo.ChargeTransaction", column 'Id'. 

I을 다른 테이블간에 탐색 속성이 있습니다 (예 : ChargeTransaction에서 Account 테이블의 탐색 속성 사용).

아이디어가 있으십니까?

답변

1

ChargeTransactionId에 0이있는 ChargeError 테이블의 데이터가 있었고 ChargeTransaction에 행이 없으므로 ChargeTransaction에 Id = 0 행이 없습니다.

ChargeError에서 모든 행을 삭제하면 정상적으로 업데이트가 진행됩니다.