我正在使用实体框架6进行crud操作,包括DbGeometry属性。该属性包含从WellKnownText创建的多边形。
DbGeometry.PolygonFromText("POLYGON((1.00 1.00, 1.00 80.00, 80.00 80.00, 80.00 1.00, 1.00 1.00))", 27700);
保存实体时,二进制数据存储在空间数据库中。但是当使用WellKnownText填充检索WellknownValue时,Dbgeometry.WellKnownValue.WellKnownBinary属性为null
(会在此处发布图片,但信誉点不够:()
当然这应该是从数据库中的二进制文件中填充的。我尝试通过AsBinary()方法设置字段但没有成功。
更新
感谢John,但不幸的是,这也没有用。我试过了:
Property.WellKnownValue.WellKnownBinary = Property.AsBinary();
仍然使用QuickWatch窗口将Property.WellKnownValue.WellKnownBinary留作null
我也试过
byte[] byteVariable = Property.AsBinary();
这确实创建了一个我在下面粘贴的93字节长的字节数组,但是它应该包含的内容似乎非常空。
1,3,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0 ,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,84,64,0,0,0,0,0,0,84 ,64,0,0,0,0,0,0,84,64,0,0,0,0,0,0,84,64,0,0,0,0,0,0,240,63,0 ,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,
如果我然后尝试将该字节数组分配给WellKnownBinary:
Property.WellKnownValue.WellKnownBinary = byteVariable
使用QuickWatch窗口,Property.WellKnownValue.WellKnownBinary仍显示为null
我认真思考:(
答案 0 :(得分:1)
我不完全确定为什么DbGeometry.WellKnownValue.WellKnownBinary
为NULL但不重要,数据以二进制格式存储在SQL中。
你实际上几乎就在那里,除了DbGeometry.AsBinary()
是一个吸气剂,而不是一个吸尘器。
因此,如果您确实需要它的值,只需使用DbGeometry.AsBinary()
来检索值(作为字节数组)。