C#中.NET 7.0控制台应用使用LINQtoSQL、LINQtoXML

2023-11-09 06:28

本文主要是介绍C#中.NET 7.0控制台应用使用LINQtoSQL、LINQtoXML,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、新建控制台应用和数据库连接

二、手动添加System.Data.Linq程序包

三、手动添加System.Data.SqlClient程序包

四、再次操作DataClasses1.dbml

五、示例

1.源码

2.xml文件


        默认安装的.NET 7.0控制台应用是不支持使用LINQtoSQL、LINQtoXML的。 

        默认安装的.NET Framework控制台应用和窗体应用都支持LINQtoSQL、LINQtoXML类的。

       .NET Framework的Windows窗体应用、控制台应用,默认安装后或添加LINQtoSQL、LINQtoXML类后都能自动生成完整的支持文件,而.NET 7.0控制台应用和窗体应用,默认安装或添加应用后不能自动生成完整的支持文件。

        比照缺少的支持文件,手动添加,就有可能获得.NET 7.0控制台应用、窗体应用支持使用LINQtoSQL、LINQtoXML的解决方案。

        本文作者在上一片文章中发布了.NET 7.0窗体应用支持使用LINQtoSQL、LINQtoXML的解决方案。在本文中,作者将公布.NET 7.0控制台应用支持使用LINQtoSQL、LINQtoXML的解决方案。

一、新建控制台应用和数据库连接

         VS2022→新建C#控制台应用.NET 7.0→新建数据库连接db_CSharp→添加LINQtoSQL,如建立过该类,接受确认,双击DataClasses1.dbml,拖拽入数据表tb_Employee、tb_Salary,保存,资源管理器里会自动生成一些文件,但不全,打开DataClasses1.designer.cs,会发现一片红警(类似的截图在作者上一篇文章中有,读者也可以亲自测试)→,发现缺少很多支持文件:System.Data.Linq、System.Data.Linq.Mapping(现象:这些using是虚的)。

二、手动添加System.Data.Linq程序包

        这个文件让程序支持LINQ,仅仅有它不一定对全部的LINQ有用,但没有它一定不支持LINQ。

        通过NuGet下载安装netcore-system.data.linq.7.0.4。具体的操作已经发布在作者的上一篇文章中。

        安装这个程序包后,使得我的程序获得支持LINQtoXML类。

三、手动添加System.Data.SqlClient程序包

        通过NuGet下载安装 system.data.sqlclient.4.8.5。

        安装这个程序包后,使得我的程序获得支持LINQtoSQL类。

四、再次操作DataClasses1.dbml

        双击DataClasses1.dbml →删除窗体中曾经添加的数据表tb_Employee、tb_Salary,保存 →重新添加数据表tb_Employee、tb_Salary,保存。→ 再次打开DataClasses1.designer.cs,发现曾经的一片红警,消失了。

        至此,在.NET 7.0控制台应用里支持使用LINQtoSQL、LINQtoXML的开发环境搭建完成。

 

五、示例

         在上述的开发环境中,设计一段程序生成一个新的XML文件,这个XML的数据源自数据库db_CSharp的两个数据表:从数据表tb_Employee取前三个记录,每个记录选取ID和Name两个元素,从数据表tb_Salary前一个记录的元素Salary。

1.源码

// .NET7.0控制台应用支持LINQtoSQL和LINQtoXML
using System.Data;
using System.Xml.Linq;namespace _10_2
{class Program{    static void CreateXmlFromDatabase(){string path = Directory.GetCurrentDirectory() + @"\Createbydb.xml";string strCon = "Data Source=DESKTOP-3LV13FS;Integrated Security=True;Database=db_CSharp;";DataClasses1DataContext? _Linq;          //声明Linq连接对象并声明成为非null值_Linq = new DataClasses1DataContext(strCon);XElement root = new("db_CSharp", _Linq.tb_Employee.Select(c => new XElement("tb_Employee",new XElement("ID", c.ID),new XElement("Name", c.Name),new XElement("db_CSharp", _Linq.tb_Salary.Select(p => new XElement("tb_Salary",new XElement("Salary", p.Salary))).Take(1)))).Take(3));root.Save(path);}static void Main(string[] args){CreateXmlFromDatabase();}}
}

2.xml文件

<db_CSharp><tb_Employee><ID>YGBH0001</ID><Name>小王</Name><db_CSharp><tb_Salary><Salary>1500</Salary></tb_Salary><tb_Salary><Salary>3000</Salary></tb_Salary><tb_Salary><Salary>5000</Salary></tb_Salary></db_CSharp></tb_Employee><tb_Employee><ID>YGBH0002</ID><Name>小李</Name><db_CSharp><tb_Salary><Salary>1500</Salary></tb_Salary><tb_Salary><Salary>3000</Salary></tb_Salary><tb_Salary><Salary>5000</Salary></tb_Salary></db_CSharp></tb_Employee><tb_Employee><ID>YGBH0003</ID><Name>小刘留</Name><db_CSharp><tb_Salary><Salary>1500</Salary></tb_Salary><tb_Salary><Salary>3000</Salary></tb_Salary><tb_Salary><Salary>5000</Salary></tb_Salary></db_CSharp></tb_Employee>
</db_CSharp>

        读者看出什么问题来了吗?如何解决,欢迎提供方案。

这篇关于C#中.NET 7.0控制台应用使用LINQtoSQL、LINQtoXML的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/374436

相关文章

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We