DDDパターンを使用するプロジェクトは、.NETコアとEFコアで構築されます。今日、私は、データベースにタグエンティティを追加した後、saveChangesを実行するという質問に遭遇します。 "IDENTITY_INSERTがOFFに設定されていると、テーブル 'タグ'のID列に明示的な値を挿入できません。 また、私はstackoverfolwとgoogleで質問を検索して困惑しています。私はいくつかの解決策は、属性 [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
を使用しているが、私のために動作しないことがわかりました。ここでは以下の私のコードは次のとおりです。エラーが発生するEFコアIDENTITY_INSERTがOFFに設定されている場合、テーブル 'タグ'のID列に明示的な値を挿入できません。
C#//Entity
public class Tags
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int TagId { get; set; }
public string TagName { get; set; }
public TagUseCount TagUseCount { get; set; }
public enum Operation
{
None = 0,
Add = 2,
Update = 4
}
}
私のサービス弁護士での関数の使用:
var tagEntity = new Tags { TagName = tag };
var tagId = await _tagRepository.Add(tagEntity);
の追加機能は、レポジトリ弁護士である:
public async Task<int> Add(Tags tags)
{
try
{
_unitOfWork.Add(tags);
await _unitOfWork.CommitAsync();
return tags.TagId;
}
catch (Exception ex)
{
_logger.LogError(new EventId(), ex, "Error when add Tag!");
}
return 0;
}
UOWは、メソッドを追加します。
TEntity IUnitOfWork.Add<TEntity>(TEntity entity)
{
return base.Set<TEntity>().Add(entity).Entity;
}
ModelBuilderの下の3210
:
modelBuilder.Entity<Tags>().ToTable("Tags")
.HasKey(x => x.TagId);
modelBuilder.Entity<TagUseCount>().ToTable("TagUseCount")
.HasKey(x => x.TagId);
modelBuilder.Entity<TagUseCount>().ToTable("TagUseCount")
.HasOne(x => x.tags)
.WithOne(q => q.tagUseCount);
私は私を助けることができる日のカップルのためにそれで狂ったのですか?私は私の質問のためのデモを作るとき
コードのどこかに「TagId」を設定していますか? UOWの 'Add'メソッドも見ることができますか?また、どのバージョンのEFコアを使用していますか?私たちはおそらく助けることができますが、[mcve]、つまりコピー/ペーストと実行が可能なものが必要です。 –
私は私の質問のためにデモを作成するときに答えを得ました。私はTags.csのコメント行でそれを解決しました。 'public TagUseCount TagUseCount {get;セット; } '、しかし私はなぜか分からないのですか? – doublnt