8

我在将表格加载到设计器时遇到了一些问题。我收到以下错误。

一个或多个选定项目包含设计器不支持的数据类型

假设它是导致此错误的表中使用的地理类型,我是否正确?

任何指针都非常感谢。

4

3 回答 3

3

要更正此错误:

  1. 创建一个基于所需表且不包含不受支持的数据类型的视图。2.将视图从服务器资源管理器/数据库资源管理器拖到设计器上。

或查看这篇文章The Missing Linq to SQL Spatial,这篇文章提供了有关如何在 Linq to SQL 中使用 SQL Server 空间数据类型 -Geography 和 Geometry- 的提示和技巧

于 2010-08-27T06:24:20.273 回答
1

查看下面的文章/答案以获取详细信息:

SqlGeography 和 Linq to Sql

是否可以将 SqlGeography 与 Linq to Sql 一起使用?

Linq to SQL 不支持空间类型。支持不是“不是很好”——它不存在。

您可以将它们读取为 BLOB,但您不能通过简单地将 Linq 中的列类型更改为 SQL 来做到这一点。您需要使用 CAST 语句在数据库级别更改查询以将列作为 varbinary 返回。您可以通过添加计算的 varbinary 列在表级别执行此操作,Linq 会很高兴地将其映射到 byte[]。

于 2010-08-27T06:20:25.763 回答
1

我有一个项目(一个小项目,已获批准),它对空间类型有了新的要求。我决定看看将实体框架从 LINQ 升级到 SQL 是多么容易。

我花了不超过30分钟。在开始之前,请确保您有源代码控制备份。

  1. Install-Package EntityFramework -Version {pick one}
  2. 删除旧.dbml文件
  3. 生成一个新的实体模型并更新对新实体对象的引用(如果您已经有一个基础存储库或包装 LINQ to SQL 的东西,这会更容易)。我选择了这条路线(数据库优先/设计器),因为它是从 LINQ 到 SQL 的更简单的升级路径。如果您愿意,可以先尝试代码,但是... YMMV。
  4. 更新您的连接字符串。实体框架对传统的 SQL 连接有自己的怪异包装器。我的是这样的,你的可能看起来不一样:metadata=res://*/;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS; Initial Catalog=MyDataBase; Integrated Security=True'
  5. 修复编译错误。它们中的大多数将是Insert/DeleteOnSubmit和 EFAdd/RemoveAdd/RemoveRange. 事务范围的工作方式可能不同(考虑使用context.Database.BeginTransaction而不是事务范围)。
  6. 解决编译错误后重新构建它。

就是这样。这比我预期的要容易得多,现在我可以使用空间类型而无需任何技巧。

于 2017-12-01T18:46:32.590 回答