우리는 사용자가 정의한 사용자 정의 반올림을 사용하고 분당 반올림 규칙은 모든 사용자가 언제든지 변경할 수있는 데이터베이스 테이블에 저장됩니다.C# 및 tsql에서 사용하는 비즈니스 로직을 중앙 집중화합니다.
우리는 C#과 Sql 모두에서 동일한 코드를 사용합니다. C#에서는 캐시를 사용하여 캐시 할 때 더 빨리 읽을 수 있도록 캐시에 저장하고 Sql에서는 반올림 테이블과 결합하여 해당 분에 대한 올바른 반올림 규칙을 찾습니다.
그래서 논리를 중앙 집중화하기 위해 원래 테이블을 둥근 규칙 테이블과 결합하고 반올림 된 값이있는 두 개의 새 열을 추가하는 app 및 sql에서보기를 사용하여 생각했습니다. 그러나 이는 이미 존재하는 레코드를위한 것이므로 때로는 가치있는 값을 반올림해야하기 때문에 뷰를 사용하는 것이 우리가 바라는 대안이 아닙니다.
이 문제를 처리하는 가장 최근의 생각은 sqlclr 함수를 사용하는 것입니다. 그러나 함수 인 경우 함수는 반올림 된 값을 얻기 위해 원래 테이블과 함께 select의 모든 행에 대해 호출되며 이는 우리가 SQL 쪽에서. 이 시나리오에서 sqlclr 함수를 사용하는 방법이 있습니까? 아니면 비즈니스 논리를 중앙 집중화하는 더 좋은 방법이 있습니까?
이 기존의 접근 방식은, 지금 우리는 모든 Clockings 테이블에서 열 플러스 시작과 끝의 둥근 열을 반환하는 뷰를 가지고 있지만, 우리가 필요로하는 모든 경우를 커버 아니에요 C#에서.
죄송합니다. 링크를 보내지 못해 죄송합니다. sqlfiddle은 현재 제대로 작동하지 않습니다.
예제 데이터, 사용 사례 및 원하는 결과가 도움이 될 것입니다. –
다른 사용자가 동일한 시간 간격에 대해 동일한 데이터에 다른 규칙을 적용 할 수 있습니까? 아마도 날짜/시간과 함께 저장된 값을 가지며 데이터가 스탬프 된 시점에서 적용 할 수있는 반올림을 적용 할 수 있어야합니다.이 모든 것이 집계에 어떤 영향을 미치 나 그것을 피합니까? 데이터 값 및/또는 날짜/시간을 업데이트하거나 쓸 수 있습니까? .... – HABO