2012-01-10 2 views
3

SQL Server를 사용하는 레거시 응용 프로그램을 변환 중이며 데이터 액세스 계층에 petapoco를 사용하고 싶습니다.PetaPoco 삽입물을 사용할 때 데이터베이스의 DEFAULT 값을 처리하는 방법은 무엇입니까?

테이블 정의에는 DEFAULT 값이있는 열이 많이 포함되어 있습니다.

새 레코드를 삽입 할 때 내 DAL에서 기본값을 처리하고 싶습니다.

불행히도 ResultColumn 특성을 사용하는 것은 해결책이 아닙니다. 왜냐하면 UPDATE 및 INSERT를 사용할 때 열이 삭제되기 때문입니다. DEFAULT 값은 읽기 전용으로 계산 된 필드와 정확하게 일치하지 않습니다.

처리 방법이 있습니까?

답변

7

값이 NULL로 설정되면 값을 DBNull에 삽입하거나 업데이트하기 때문에 현재 방법이 없습니다.

예를 들어 새로운 속성을 사용하려면 코드를 변경해야합니다. [OmitColumnIfDefaultValue] 그런 다음 해당 열의 값이 기본 CLR 값과 같으면 insert 문에서 열을 생략 할 수 있습니다.

+0

알기. http://stackoverflow.com/questions/230662/insert-default-value-when-parameter-is-null과 관련하여 삽입하는 동안 petapoco가 표시된 채우기를 무시하도록 몇 가지 명확한 규칙을 정의해야합니다. 1) 해당 속성을 장식해야합니다. 2) 삽입하기 전에 객체에서 값을 null로 설정해야합니다. – Larry

+0

null을 말할 때 int가 null 일 경우 int가 사용되어야하거나 값이 C# ...의 기본값과 같아야합니다. ints는 0입니까? – Schotime

+0

확실히 유형을 Null 할 수 있어야합니다. DEFAULT가 NOT NULL 필드에 대한 INSERT 중에 NULL 값을 피하는 옵션이라고 생각하면 이것은 잘 맞는 것 같습니다. – Larry