SQL 속성에 Linq를 기존 클래스에 추가합니다 (속성의 데이터 유형을 변경하기위한 급변 변경) 나는 ColumnAttribute
의 저장 매개 변수를 지정하면 백업 필드와 직접 상호 작용하는 SQL 비트에 Linq에 지시 것이라고 생각 않았다, 그래서 나는 다음과 같은 뭔가 일을 기대 :Nullable 필드를 코드의 첫 번째 nullable 속성으로 장식하기 Linq to SQL
Private _foo As Integer? = 0
<Column(CanBeNull:=True, DbType:="INT", Name:="FooBar", Storage:="_foo")> _
<DefaultValue(0)> _
Public Property Foo() As Integer
Get
Return If(_foo.HasValue, _foo.Value, 0)
End Get
Set(ByVal Value As Integer)
_foo = If(Value = 0, New Integer?(), Value)
End Set
End Property
을 한번 소용돌이를 제공 한 후 기본형 :
MyThing target = (from u in context.MyThings select u).First();
나는이 실패 찾는거야
과 :
System.InvalidOperationException : 널 (null) 값이 아닌 널 (NULL) 값 유형입니다 종류 선택 System.Int32와 멤버에 할당 할 수 없습니다 ..
그래서 기존 코드를 변경하여 LINQ에서 SQL로 작업 할 수 있습니까? 아니면 LINQ to SQL 버전에 대해 중복 속성을 추가해야합니까?
오류가 꽤 설명이 보인다 : 당신이 널 (NULL) 정수 nullable이 아닌 정수가 예상된다 ('_foo')를 사용하고 있습니다. 올바른 유형 (예 : '정수'대신 '정수') 만 고려하십시오. – varocarbas
@varocarbas 다른 방법으로 오류가 발생합니다. 데이터베이스의 열은 null입니다. 내 후원 필드가 nullable이며, 내 속성이 아닙니다 (nullable 백킹 필드를 null이 아닌 유형에 기꺼이 매핑 함) –
글쎄 ... 당신의 질문에서 무엇이 무엇인지 분명하지 않습니다. 하지만 내 제안의 요점은 어쨌든 유지됩니다. 올바른 유형에만 의존하십시오. nullable이거나 nullable이 아닌 모든 것. 포인트 어드 바이스를 더 원하면 쉽게 재현 할 수있는 샘플을 게시하여 모든 사람들이 문제를 올바르게 이해할 수 있도록해야합니다. – varocarbas