我在将表格加载到设计器时遇到了一些问题。我收到以下错误。
一个或多个选定项目包含设计器不支持的数据类型
假设它是导致此错误的表中使用的地理类型,我是否正确?
任何指针都非常感谢。
我在将表格加载到设计器时遇到了一些问题。我收到以下错误。
一个或多个选定项目包含设计器不支持的数据类型
假设它是导致此错误的表中使用的地理类型,我是否正确?
任何指针都非常感谢。
要更正此错误:
或查看这篇文章The Missing Linq to SQL Spatial,这篇文章提供了有关如何在 Linq to SQL 中使用 SQL Server 空间数据类型 -Geography 和 Geometry- 的提示和技巧
查看下面的文章/答案以获取详细信息:
是否可以将 SqlGeography 与 Linq to Sql 一起使用?
Linq to SQL 不支持空间类型。支持不是“不是很好”——它不存在。
您可以将它们读取为 BLOB,但您不能通过简单地将 Linq 中的列类型更改为 SQL 来做到这一点。您需要使用 CAST 语句在数据库级别更改查询以将列作为 varbinary 返回。您可以通过添加计算的 varbinary 列在表级别执行此操作,Linq 会很高兴地将其映射到 byte[]。
我有一个项目(一个小项目,已获批准),它对空间类型有了新的要求。我决定看看将实体框架从 LINQ 升级到 SQL 是多么容易。
我花了不超过30分钟。在开始之前,请确保您有源代码控制备份。
Install-Package EntityFramework -Version {pick one}
.dbml
文件metadata=res://*/;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS; Initial Catalog=MyDataBase; Integrated Security=True'
Insert/DeleteOnSubmit
和 EFAdd/Remove
或Add/RemoveRange
. 事务范围的工作方式可能不同(考虑使用context.Database.BeginTransaction
而不是事务范围)。就是这样。这比我预期的要容易得多,现在我可以使用空间类型而无需任何技巧。