有谁知道(理想情况下带有引用),LinqToSQL的VS2010版本或EntityFramework v4是否支持对SQL 2008空间数据类型的查询?Linq2Sql或EF4中的空间数据类型支持
回答
在EF 4.0中,您可能能够使用custom functions的组合破解一些东西,假装空间类型实际上是二进制类型。这是我正在考虑尝试并添加到my tips series的东西。但即使这种黑客行为尚未得到证实。 :(
至于直接支持,遗憾的是没有L2S或EF V4支持空间类型在VS2010的时间表。
实体框架项目经理。
这里有一个解决方法,以获取它在实体框架/ LINQ to Entities中工作:
可以使用数据库视图返回Well-Known-Text(在查询中使用“geometry.ToString()”)或Binary。行被返回,只需将字符串/二进制转换为.NET中的SqlGeometry对象。
这里是用来建立一种观点认为,几何型的“位置”字段转换为一个知名的文本字符串示例查询:
SELECT ID, Name, Location.ToString() as Location FROM MyTable
这里的查询得到的实体有一个的例子“位置”字段包含“地理”对象的知名文本或字符串表示:
var e = new MyApp.Data.MyDataEntities(connectionString);
var items = from i in e.MyTables
select i;
foreach (var i in items)
{
// "Location" is the geography field
var l = SqlGeography.Parse(i.Location);
var lat = l.Lat;
var lng = l.Long;
}
一个额外的事情,是你需要做的存储过程中基于任何空间查询,因为你不想将表中的所有数据放入.NET为了使用LINQ来执行你自己的空间查询。
这不是一个原生支持SQL Spatial Types的优化,但它可以让你同时运行Entity Framework和SQL Spatial。
非常好,非常感谢Chris。我会看看这个! – 2009-11-25 18:03:35
这一直是我一直在玩/用L2S的东西。 – 2009-11-30 23:13:56
非常感谢:) – 2010-01-27 18:40:20
你也可以用手写的表和列完全执行Linq-to-SQL并直接获取SQL空间类型。我测试了样品DB以下(不要”忘了包括参考和 '用' 到System.SqlServer.Types
...
string connectionString = @"Data Source=YADDAYADDA;Initial Catalog=MUMBLEMUMBLE;Integrated Security=True";
var pointsFileDc = new PointsFileDC(connectionString);
var geos = (from point in pointsFileDc.pointsData
select point).Take(10);
foreach (var geo in geos)
{
ObjectDumper.Write(geo);
}
...
public class PointsFileDC : DataContext
{
public Table<GeoPoints> pointsData;
public PointsFileDC(string connection)
: base(connection)
{
}
}
[Table(Name = "Points")]
public class GeoPoints
{
[Column(IsPrimaryKey = true)]
public int PointId;
[Column]
public SqlGeography GeoPoint;
}
- 1. Oracle Lite数据库10g是否支持空间数据类型?
- 2. SQL Server CE是否支持空间数据类型的同步?
- 3. DotNetNuke的7支持空间数据类型
- 4. Dapper支持空间类型.net核心
- 5. Spark SQL不支持的数据类型时间戳类型
- 6. 批量数据源不支持SQLNUMERIC或SQLDECIMAL数据类型
- 7. Storm和Spark支持的数据类型
- 8. 对Linq2SQL的Spring.Net支持
- 9. 空间数据类型
- 10. opencv python:mat数据类型= 17不支持
- 11. Spark:不支持变体数据类型
- 12. SharedObject支持哪些数据类型?
- 13. Silverlight支持位图数据类型
- 14. PHP支持复合数据类型吗?
- 15. 哪些数据库系统支持ENUM数据类型,哪些不支持?
- 16. 图形数据库具有对时间数据类型的本地支持
- 17. Linq支持实体'仅支持原始类型或枚举类型'错误
- 18. ActiveJob :: SerializationError - 不支持的参数类型:时间/日期时间
- 19. AmazonServiceException:Supplied AttributeValue为空,必须包含其中一个受支持的数据类型
- 20. 类型错误:IMG数据类型= 17不支持
- 21. 支持各种数据类型的数据结构
- 22. Delphi中支持'hyper'MIDL类型
- 23. Flash是否支持泛型(强类型集合或数组)?
- 24. 是在Hive中支持主键的Uniqueidentifier数据类型?
- 25. SSRS 2008是否支持SQL查询中的XML数据类型?
- 26. SQLite中的BLOB数据类型是否支持全文搜索?
- 27. 在SQL Server中的图像数据类型支持镜像
- 28. visual studio 2008中支持的数据类型
- 29. Druid中支持的维度数据类型列表?
- 30. XSLT2.0名称空间支持
感谢亚历克斯,似乎是一个可靠和明确的答案!EF4是否有任何特殊原因不会支持他们(太难了,需求不足,优先级太低?) – 2009-08-23 21:28:08
好吧,我不会说优先级太低。我认为这是重中之重,但我会说它并不像我们最终做的一些事情那么高,比如POCO,F Ks,Model First等。 – 2009-08-23 22:33:47
EF何时会获得空间类型支持? VS'2012;仅在他们被添加到SQL Server 4年后? – 2010-06-02 01:50:41