实体框架6 Dbgeometry.WellKnownValue.WellKnownBinary未填充

时间:2014-04-11 13:41:46

标签: c# entity-framework spatial

我正在使用实体框架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

我认真思考:(

1 个答案:

答案 0 :(得分:1)

我不完全确定为什么DbGeometry.WellKnownValue.WellKnownBinary为NULL但不重要,数据以二进制格式存储在SQL中。

你实际上几乎就在那里,除了DbGeometry.AsBinary()是一个吸气剂,而不是一个吸尘器。

因此,如果您确实需要它的值,只需使用DbGeometry.AsBinary()来检索值(作为字节数组)。

相关问题