내 데이터베이스에 새 레코드를 삽입하는 방법이 있습니다.
public static async Task SaveDataToEntitySetAsync<TEntity>(DbContext context,List<TEntity> list)
where TEntity : class
{
if(list.Any() == false)
return;
var dbSet = context.Set<TEntity>();
var existingData = await dbSet.Select(x=>x.Id).ToListAsync();
list.RemoveAll(x => existingData.Contains(x.Id));
await dbSet.AddRangeAsync(list);
}
위의 논리는 제네릭을 사용하지 않은 경우 수행하려는 것입니다.
이것을 제네릭에서 작동하는 구문으로 어떻게 변환 할 수 있습니까? .Id가 유효하지 않기 때문에이 구문은 일반 컨텍스트에서 작동하지 않습니다.
EF Core를 사용하고 있으므로 테이블에 레코드가 추가되면 EF Core가 연결된 외래 키 테이블에 자동으로 레코드를 추가합니다.
이 접근 방식의 문제점은 내 컨텍스트에서 각 테이블에 대해이 메서드를 호출한다는 것입니다.
영국의 고객이 추가되었다고 가정 해 보겠습니다. 괜찮습니다. 고객이 추가되고 영국 국가가 추가됩니다 (아직없는 것으로 가정).
또한 데이터베이스에 저장 한 모든 국가를 추출했습니다. 영국이 이미 구해 졌기 때문에 분명히 이것은 깨질 것입니다.
따라서 이미 데이터베이스에있는 국가 목록에서 항목을 제거하려고합니다.
내 모든 엔터티는 Id가 정의 된 BaseEntity에서 나왔지만 그 사실을 어떻게 사용하는지 잘 모르겠습니다.
폴
엔티티는 Id
속성 이있는 동일한 기본 클래스에서 이미 상속하므로 일반 유형을 다음과 같이 제한 할 수 있습니다.
where TEntity : BaseEntity
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다