이진 필드를 null로 설정하려고하면 ArgumentNull 예외가 발생합니다. 필자는이 필드를 new Binary(new byte[] {});
과 같이 비워 둘 수 있지만 null이 아닙니다. LinqToSql을 사용하는 해결 방법이 있습니까?Linq To Sql Binary 필드를 null로 설정하십시오.
답변
당신은 뭔가 다른 일이 있습니다. 방금 ID (ID), nullable varbinary (MAX), nullable varbinary (MAX) 및 타임 스탬프가있는 작은 샘플 테이블을 만들었습니다. 다음 코드를 사용하면 오류없이 잘 작동합니다.
using (var context = new TestDataContext())
{
var binarySample = new BinarySample
{
Image = null,
NonNullImage = new Binary(new byte[0]),
};
context.BinarySamples.InsertOnSubmit(binarySample);
context.SubmitChanges();
}
여기서이 코드는 ArgumentNullException이 아닌 SQLException을 올바르게 throw (catch)합니다.
try
{
using (var context = new TestDataContext())
{
var binarySample2 = new BinarySample
{
NonNullImage = null,
Image = new Binary(new byte[0])
};
context.BinarySamples.InsertOnSubmit(binarySample2);
context.SubmitChanges();
}
}
catch (SqlException e)
{
Console.WriteLine(e.Message);
}
은 당신이 경우 ArgumentNullException를 던지고 속성에 대한 SendPropertyChanging 핸들러가 부분 클래스 구현이 가능한가요?
편집 : OP의 의견을 기반으로합니다. 즉, implicit conversion operation를 호출하고 암시 적 변환이 경우 ArgumentNullException을 throw합니다 당신이 직접 바이너리에 입력 바이트 []의 변수를 할당 할 수 없습니다
참고. 값을 할당하려고 시도하기 전에 값이 null인지 확인하고 byte [] 변수가 null 인 경우 null을 할당해야합니다. 나에게 이것은 이상한 행동처럼 보이고 나는 미래에 그것을 바꿀 것이라고 희망한다. MSDN 설명서는 향후 버전에서 일부 변경이 발생할 수 있음을 나타냅니다.
ExecuteQuery() 메서드를 사용하여 고유 한 SQL을 전달할 수 있습니다.
@tvanfosson (답변으로 게시 코드의 더 나은 서식을 얻기 위해)
예는 바로, 이상한 일이, 내 C# 지식을 넘어 무언가 진행되고있다.
from.ImageThumbnail는 바이트 [] to.ImageThumbnail 이진이다
사용? 또는 ?? 운영자는 작동하지 않을 것입니다. 난 당신이 Linq2SQL 디자이너에 테이블을 추가 할 때이 널 (NULL) 컬럼으로 정의되지 않은 경우 또한, 당신은 디자이너에서 테이블을 삭제해야합니다, 왜 :-)
if (from.ImageThumbnail != null) // works
{
to.ImageThumbnail = from.ImageThumbnail;
}
else
{
to.ImageThumbnail = null;
}
to.ImageThumbnail = from.ImageThumbnail != null ? from.ImageThumbnail : null; // fails
to.ImageThumbnail = from.ImageThumbnail ?? null; // fails
byte []에서 Binary (http://msdn.microsoft. com/ko-kr/library/system.data.linq.binary.op_implicit.aspx)를 사용하여 할당을 처리합니다. 인수가 널인 경우 변환 조작은 예외를 _ 생시킵니다. 이것은 실제로 운영자 설명서에 기록되어 있습니다. 코드의 첫 번째 버전을 고수하십시오. – tvanfosson
FYI - 아마도 질문을 편집하고이 정보를 별도의 대답으로 추가해야합니다. 이렇게하면 같은 문제에 대한 해결책을 모색하는 다른 사람들에게 질문이 더 유용 해집니다. – tvanfosson
정보를 주셔서 감사합니다. – Karsten
- 1. linq 반환 속성을 null로 설정하십시오.
- 2. LINQ-to-SQL Binary = null 인 열거 식이 실패합니다.
- 3. LINQ to SQL 업데이트
- 4. 모든 0 값을 NULL로 설정하십시오.
- 5. 변환기 값을 null로 설정하십시오.
- 6. Linq to Sql - 환경 변수에 따라 연결 문자열을 동적으로 설정하십시오.
- 7. datetime 필드의 값을 null로 설정하십시오.
- 8. 도움말 Linq to SQL
- 9. LINQ to SQL
- 10. Linq to SQL
- 11. LINQ to SQL Join
- 12. LINQ-to-SQL IN()
- 13. Linq to SQL 연결
- 14. LINQ to SQL
- 15. Linq to SQL
- 16. linq to sql "Contains"
- 17. LINQ to SQL
- 18. Linq to SQL 매핑
- 19. Linq to SQL 문제
- 20. LINQ to SQL
- 21. SQL to LINQ Tool
- 22. LINQ to SQL
- 23. LINQ to SQL 오류
- 24. Linq to SQL 연결
- 25. linq to sql connection
- 26. LINQ to SQL
- 27. linq to sql 결함
- 28. LINQ to SQL/XML
- 29. LINQ to SQL 테스트
- 30. 열심히 LINQ to SQL
코드 형식을 더 잘 이해하기 위해 내 의견을 게시했습니다 (아래 참조). – Karsten