0

PKを持つテーブルがありますが、アプリケーションを実行しようとすると、 DefaultEditionCreator.csCodeで以下の例外が発生します。

[Table("Test")]
public class Test: FullAuditedEntity<string>
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    new public int Id { get; set; }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    [MaxLength(NVarcharLength14), DataType(DataType.Text)]
    public virtual string Code { get; set; }
}

宣言されたリポジトリ:

private readonly IRepository<Article, string> _articleRepository;

例外:

System.InvalidOperationException: ''int' 型の指定されたフィールド 'k__BackingField' は、'string' 型のプロパティ 'Article.Id' には使用できません。プロパティ タイプから割り当て可能なタイプのバッキング フィールドのみを使用できます。

実行中に同じエラーが発生しUpdate-DatabaseAdd-Migration.

更新 1

@aaron ご協力ありがとうございます。提案された手順を試しましたが、レコードの更新および削除中にエラーが発生します。

例外:

ERROR 2018-02-12 06:13:23,049 [30] Mvc.ExceptionHandling.AbpExceptionFilter - エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください。Microsoft.EntityFrameworkCore.DbUpdateException: エントリの更新中にエラーが発生しました。詳細については、内部例外を参照してください。---> System.Data.SqlClient.SqlException: ID 列 'Id' を更新できません。

public async Task UpdateTest()
{
   var entity = GetAll().Where(x => x.TestId == "One").FirstOrDefault();
   await UpdateAsync(entity);
}

public async Task DeleteTest()
{
   await DeleteAsync(x => x.TestId == "One"); 
}

public class Test : FullAuditedEntity
{
   // PK
   public string TestId { get; set; }

   // Unique constraint
   public int TestId2 { get; set; }
}

更新 2

Disable SoftDelete for AbpUserRoleを参照して SoftDelete を無効にしようとしていますが、DB から行を削除するのではなく、まだ SoftDelete を実行しています。スクリーンショットを見つけてください:

ここ

public class TestAppService : MyProjectAppServiceBase, ITestAppService
{
    public Task DeleteTest()
    {
        using (CurrentUnitOfWork.DisableFilter(AbpDataFilters.SoftDelete))
        {
            return _testRepository.DeleteTest();
        }
    }
}

MyDBContext.cs :

protected override void CancelDeletionForSoftDelete(EntityEntry entry)
{
    if (IsSoftDeleteFilterEnabled)
    {
        base.CancelDeletionForSoftDelete(entry);
    }
}

ソリューションは正常に動作しますが、テスト ケースを実行してTestエンティティを作成する際に次の例外が発生します。

SQLite エラー 19: 'NOT NULL 制約が失敗しました: Test.Id'.

4

2 に答える 2