[SQL] 엔티티 프레임 워크와 타임 스탬프 열을 기준으로 선택의 새로운 기록
SQL엔티티 프레임 워크와 타임 스탬프 열을 기준으로 선택의 새로운 기록
나는 SQL Server 데이터베이스에 타임 스탬프 열 (RowId가)있는 테이블을 가지고있다.
나는이 타임 스탬프에 따라 쿼리 새 행합니다. SQL 쿼리는 다음입니다
SELECT *
FROM [MyTable]
where RowId>=0x0000000000A99B06
0x0000000000A99B06는 이전 쿼리에서 최대 타임 스탬프 값입니다.
어떻게 엔티티 프레임 워크는 데이터베이스 처음 사용하여 이러한 쿼리를 만들 수 있습니까? 의 RowId 바이트 [] 속성에 매핑하고 내가 LINQ 쿼리에 바이트 배열을 비교하는 방법을 모른다.
해결법
-
==============================
1.이 타임 스탬프 비교에서> = 연산자를 허용하지 않기 때문에 당신은 엔티티 프레임 워크와 함께이 작업을 수행 할 수 없습니다. 그것은 단지 = 수 있습니다. 당신은 예를 들어, 할 수있는
이 타임 스탬프 비교에서> = 연산자를 허용하지 않기 때문에 당신은 엔티티 프레임 워크와 함께이 작업을 수행 할 수 없습니다. 그것은 단지 = 수 있습니다. 당신은 예를 들어, 할 수있는
var b = BitConverter.GetBytes(1000000L); var query = from x in MyTable where x.RowId = b; // not >=
그러나 그것은 매우 유용하지 않을 것입니다. 당신은, 예를 들어, 새 행을 얻기 위해 다른 방법을 찾아야 그래서 ID 열에서의 값은 또는 "실제"타임 스탬프 (날짜) 항목을 추가한다.
-
==============================
2.사실 당신은 작은 해킹을 할 수 있습니다. 그것은 나를 100 % 작동
사실 당신은 작은 해킹을 할 수 있습니다. 그것은 나를 100 % 작동
internal static class EntityFrameworkHelper { public static int Compare(this byte[] b1, byte[] b2) { throw new NotImplementedException(); } }
그리고 그 후 당신은 다음과 같이 사용할 수 있습니다 :
public void SomeMethod() { var messages = Set<Message>().Where(m => m.Modified.Compare(filter.TimeStamp) > 0).ToList(); }
그것은 결국이 같은 SQL 구문을 생성합니다. "수정 된 메시지에서 선택 *> @param)을 그리고 그것은 작동 예외가 발생되지 않습니다..
-
==============================
3.다른 방법은 엔티티 프레임 워크와 일반 SQL을 사용하는 것입니다.
다른 방법은 엔티티 프레임 워크와 일반 SQL을 사용하는 것입니다.
그것은 추가적인 내부 쿼리 (거트 아놀드의 대답은 내 의견을 참조) 피할 수 있지만, 그것은 추한 것 같습니다.
long timeStamp = 100500; IEnumerable<MyTable> result = context.Database.SqlQuery<MyTable>(String.Format("SELECT * FROM MyTable WHERE ROWID>{0} ORDER BY RowId ASC", timeStamp));
from https://stackoverflow.com/questions/17761114/select-new-records-by-timestamp-column-with-entity-framework by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 고유 식별자에 VARCHAR에서 SQL 변환이보기에 실패 (0) | 2020.07.17 |
---|---|
[SQL] 하나 INSERT 명령과 복수의 열을 삽입 (0) | 2020.07.17 |
[SQL] 왜 이런 식으로 널 행동은 SQL 날짜 변수를 비교합니까? (0) | 2020.07.16 |
[SQL] 어떻게 워드 VBA SQL 쿼리에 따옴표를 다루는? (0) | 2020.07.16 |
[SQL] SQL 그룹에 의해 분 (MySQL의) (0) | 2020.07.16 |