代码改变世界

WCF 附录 高级主题 在WCF中使用LINQ

  DanielWise  阅读(1195)  评论(0编辑  收藏  举报

语言集成查询(LINQ)是.NET Framework 3.5 中的新技术,允许使用C#或者Visual Studio.NET 来查询数据。传统意义上来说,数据通过在一个应用程序中使用一个字符串表达式查询,比如SQL 或者XPath查询表达式,没有编译时的检查或者智能感知支持。LINQ通过让一条查询成为一个一流语言结构来使用这些能力。LINQ支持多种数据源包括SQL Server数据库,XML文档,ADO.NET DataSets以及.NET对象。LINQ提供一个单一的架构在这些不同的数据源之间查询数据。使用LINQ可以帮助建立数据世界与对象世界的桥梁。

暴露LINQ-to-SQL 实体

LINQ-to-SQL引用LINQ中的特性来讲存储在SQL Server 中的相关数据暴露为对象。这为存储在一个数据库表中的数据与存储在一个应用程序中的对象建立了很好的映射关系。这通常称为对象引用映射(ORM). 为了帮助实现这个映射过程,Visual Studio 2008 提供了对象关联设计器。这提供了一个创建LINQ-to-SQL实体的虚拟设计器。图片A.3 显示了LINQ-to-SQL实体的对象相关设计器。

 

图片A.3 LINQ-to-SQL对象相关设计器

  需要知道的一件事是设计器默认不适用DataContractSerializer来暴露LINQ-to-SQL实体。这意味着LINQ-to-SQL实体不能通过WCF服务暴露出来。使用一个服务暴露存储在一个数据库中的实体的能力对开发面向服务的应用来说非常重要。幸运的是,微软提供了一个称为Serialization模式的属性,它存在于LINQ-to-SQL设计器表面。设置这个属性为UniDirectinal允许LINQ-to-SQL实体使用[DataContract]和[DataMember]属性来标记。这将LINQ-to-SQL实体以一个数据契约的形式暴露给WCF,也意味着可以被WCF序列化。这个设置也可以使用SqlMetal.exe命令行实例来配置。这个实例可以用来为LINQ-to-SQL实体从一个SQL Server 数据库生成代码。在命令行传递/serialization:Unidirectinal参数会指导SqlMetal.exe 生成可以被WCF序列化的类型。

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示