我将Linq to SQL属性添加到预先存在的类中(更改属性的数据类型将是一个重大变化)我确实认为指定ColumnAttribute
的存储参数会指示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值分配给System.Int32类型的成员,该类型是不可为空的值类型。
那么,是否可以将现有代码标记为使用Linq to SQL而不进行重大更改,或者是否必须为LINQ to SQL版本添加重复属性?
答案 0 :(得分:-2)
...试
If(IsNothing(_foo), 0, _foo.Value)