我在将表格加载到设计器中时遇到了一些问题。我收到以下错误。
一个或多个所选项目包含设计者不支持的数据类型
假设它是表中使用的导致此错误的地理类型,我是否正确?
任何指针都非常赞赏。
请查看以下文章/答案的详细信息:
Is it possible to use SqlGeography with Linq to Sql?
Linq to SQL不支持空间类型。支持不是“不太好” - 它不存在。
您可以将它们作为BLOB读取,但只需将Linq中的列类型更改为SQL即可完成此操作。您需要在数据库级别更改查询,以使用CAST语句将列作为varbinary返回。您可以通过添加计算的varbinary列在表级别执行此操作,Linq将愉快地映射到byte []。
要更正此错误:
或者看看这篇文章The Missing Linq to SQL Spatial,本文提供了有关如何在Linq to SQL中使用SQL Server空间数据类型-Geography和Geometry的提示和黑客
我有一个项目(一个小项目,被授予),它对空间类型有了新的要求。我决定看看从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
和EF的Add/Remove
或Add/RemoveRange
的差异。事务范围可能有所不同(考虑使用context.Database.BeginTransaction
而不是事务范围)。而已。它比我想象的容易得多,现在我可以使用空间类型而不需要任何技巧。