데이터베이스를 캐시의 일종으로 사용하고 있습니다. 현재 알려진 "사실"을 저장하는 것이 목적입니다 (세부 사항은 흥미롭지 않습니다). 그러나 결정적으로 중복 된 사실을 삽입하는 것을 피하고 싶습니다. 이렇게하려면 현재 데이터 액세스 코드가 여러 위치에서 삽입 또는 무시를 사용합니다.엔티티 프레임 워크 : INSERT OR IGNORE와 같습니다.
엔티티 프레임 워크를 사용하여 관리 효율성을 얻고 싶습니다. 나는 미묘하게 다른 쿼리에 대해 또 다른 보일러 플레이트 코드를 작성 했으므로 쿼리에 대한 Entity Framework의 지원이 뛰어납니다.
그러나 사실은 새로운 사실을 추가 할 수있는 좋은 지원을 찾을 수 없습니다. 분명히 .NET에서 새 엔터티를 만들고 모델에 추가 한 다음 데이터베이스에 변경 사항을 저장하는 것입니다. 그러나 이것은 삽입이 허용되지 않는 특정 행이 이미 존재하는지 여부를 미리 확인해야한다는 것을 의미합니다. 일반적으로 추가 라운드 트립을 의미하지만 대개 훨씬 심각합니다. 이전에는이 코드가 매우 유사했습니다. 데이터베이스가 무시할 수 있기 때문에 간혹 중복 삽입이 중요하지 않았지만 이제는 행이 사전에 존재하기 때문에 병렬 삽입에서 하나의 이미 존재하는 행이 전체 트랜잭션의 롤백을 야기하므로 훨씬 작은 배치 (트랜잭션 오버 헤드로 인해 일반적으로 여러 번 느려집니다)에서 그렇게해야합니다.
그래서 누구나 엔티티 프레임 워크를 사용하여 비슷한 동작을 얻는 방법을 알고 있습니까?
구체적으로 말하면, 몇 가지 삽입을 수행 할 수 있고 데이터베이스가 불가능한 삽입을 무시할 수 있기를 원합니다 - 또는 더 일반적으로 불필요한 왕복을 피하기 위해 서버 측 충돌 해결 코드를 표현할 수 있어야합니다 및 거래.
중요한 경우 SQLite를 사용하고 있습니다.