LINQ to SQL Designer和Geography数据类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINQ to SQL Designer和Geography数据类型相关的知识,希望对你有一定的参考价值。
我在将表格加载到设计器中时遇到了一些问题。我收到以下错误。
一个或多个所选项目包含设计者不支持的数据类型
假设它是表中使用的导致此错误的地理类型,我是否正确?
任何指针都非常赞赏。
请查看以下文章/答案的详细信息:
Is it possible to use SqlGeography with Linq to Sql?
Linq to SQL不支持空间类型。支持不是“不太好” - 它不存在。
您可以将它们作为BLOB读取,但只需将Linq中的列类型更改为SQL即可完成此操作。您需要在数据库级别更改查询,以使用CAST语句将列作为varbinary返回。您可以通过添加计算的varbinary列在表级别执行此操作,Linq将愉快地映射到byte []。
要更正此错误:
- 创建基于所需表的视图,该视图不包含不受支持的数据类型。 2.将视图从Server Explorer / Database Explorer拖到设计器上。
或者看看这篇文章The Missing Linq to SQL Spatial,本文提供了有关如何在Linq to SQL中使用SQL Server空间数据类型-Geography和Geometry的提示和黑客
我有一个项目(一个小项目,被授予),它对空间类型有了新的要求。我决定看看从LINQ升级到SQL实体框架是多么容易。
我花了不到30分钟。确保在开始之前有源控制备份。
Install-Package EntityFramework -Version {pick one}
- 删除旧的
.dbml
文件 - 生成一个新的实体模型并更新对新实体对象的引用(如果您已经有一个基本存储库或包含LINQ to SQL的东西,这会更容易)。我走这条路(数据库第一/设计师)因为它是从LINQ到SQL的更简单的升级路径。如果您愿意,可以先试用代码,但是...... YMMV。
- 更新连接字符串。实体框架有自己的传统SQL连接的奇怪包装。我是这样的,你的看起来可能不同:
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
而不是事务范围)。 - 解决编译错误后重建它。
而已。它比我想象的容易得多,现在我可以使用空间类型而不需要任何技巧。
以上是关于LINQ to SQL Designer和Geography数据类型的主要内容,如果未能解决你的问题,请参考以下文章
LINQ to SQL class LINQ to sql Objects?