×

DotNet相关

DotNet10极简数据库对象关系映射

独孤求败 独孤求败 发表于2026-01-25 浏览30 评论0

有时候不想使用EF等ORM框架,想要实现的功能也简单,就是获取一条或者多条记录,于是自己折腾了一个,代码如下:

public class SqlFetch
{
    private readonly string _ConnectionString;
    /// <summary>
    /// 获取数据库连接字符串
    /// </summary>
    /// <param name="config"></param>
    public SqlFetch(IConfiguration config)
    {
        _ConnectionString = config.GetSection(SectionConsts.ConnectionString).Get<string>()!;
    }
    /// <summary>
    /// 获取多条记录
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="commandText"></param>
    /// <param name="func"></param>
    /// <returns></returns>
    public Task<List<T>> ToListAsync<T>(string commandText, Func<IDataReader, T> func) => ToListAsync(commandText, [], func);
    /// <summary>
    /// 获取多条记录,带参数
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="commandText"></param>
    /// <param name="paras"></param>
    /// <param name="func"></param>
    /// <returns></returns>
    public async Task<List<T>> ToListAsync<T>(string commandText, List<SqlParameter> paras, Func<IDataReader, T> func)
    {
        var items = new List<T>();
        var cn = new SqlConnection(_ConnectionString);
        var cmd = cn.CreateCommand();
        cmd.CommandText = commandText;
        if (paras.Count > 0)
            cmd.Parameters.AddRange(paras.ToArray());
        await cn.OpenAsync();
        var dr = await cmd.ExecuteReaderAsync();


        while (await dr.ReadAsync())
            items.Add(func(dr));
        await dr.CloseAsync();
        await cn.CloseAsync();

        return items;
    }
    /// <summary>
    /// 获取单条记录
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="commandText"></param>
    /// <param name="func"></param>
    /// <returns></returns>
    public async Task<T?> SingleOrDefaultAsync<T>(string commandText, Func<IDataReader, T> func)
    {
        var cn = new SqlConnection(_ConnectionString);
        var cmd = cn.CreateCommand();
        cmd.CommandText = commandText;
        await cn.OpenAsync();
        var dr = await cmd.ExecuteReaderAsync();


        try
        {
            if (await dr.ReadAsync())
                return func(dr);
            else
                return default;

        }
        finally
        {
            await dr.CloseAsync();
            await cn.CloseAsync();

        }
    }
}

DotNet相关

Visual Studio 2026 来了:更快、更智能,深受老用户的喜爱

独孤求败 独孤求败 发表于2026-01-24 浏览32 评论0

我们非常激动地宣布,Visual Studio 2026 现已正式发布!这一刻是我们与您携手共创的成果。您的反馈对本次版本的塑造作用超过了以往任何一次。自 2025 年 9 月推出 Insiders 通道以来,下载并测试该预览版的开发者数量创下了 Visual Studio 历史新高。

  在此次版本发布前的一年里,我们修复了超过 5000 个你们反馈的程序缺陷,并实现了300项功能需求。这是我们有史以来完成量最多的一次,而我们才刚刚开始!

  此次发布包含多项性能改进、重新设计的用户体验以及人工智能驱动开发方面的重大飞跃,旨在帮助开发者专注于真正重要的事情:创新。如今,每一次点击、每一次按键和每一次编译都更加流畅、快速且直观 —— 让您能够以前所未有的速度将想法转化为代码。

程序员人生

32岁程序员猝死背后,我的一些真实感受

独孤求败 独孤求败 发表于2026-01-24 浏览29 评论0

上午刷到32岁程序员周末猝死这条消息,其实我并不陌生。

这几年,程序员猝死、倒下、出事的新闻隔一段时间就会出现一次,圈子里的人早就麻木了。刷到的时候,最多叹口气,继续干活,很少真的往心里去。

看到他长期加班的细节时,我突然愣住了,因为太像了。

我也经常这样。

下午刷到他的妻子和对他的聊天记录,真的感觉很无奈,可惜,他再也回不来了......

开源项目

为.NET打开新大门:OpenVINO.NET开源项目全新发布

独孤求败 独孤求败 发表于2026-01-24 浏览42 评论0

在AI的应用越来越广泛的今天,优化深度学习模型并进行推理部署已经成为了一门必要的技术。Intel开发的OpenVINO工具包(Open Visual Inference and Neural network Optimization)就是这样一款强大的工具。作为一个开源的工具包,OpenVINO为开发者提供了强大的深度学习模型优化和推理功能,支持跨不同的Intel硬件平台进行部署,包括CPU, 集成GPU, Intel Movidius VPU, 和FPGAs。该工具包的初衷就是实现一处编码后,能在任何地方部署的机器学习推理的解决方案。

前端相关

JavaScript数组some()和every()方法

独孤求败 独孤求败 发表于2026-01-23 浏览33 评论0

在JavaScript中,数组的some()和every()方法是处理数组中元素的重要工具,它们分别用于判断数组中是否存在至少一个满足条件(some())或所有元素都满足条件(every())。这两个方法都非常有用,但它们的最佳实践取决于具体的使用场景。下面是一些关于如何使用这些方法的最佳实践指南。
1. some() 方法

some() 方法用于测试数组中是否至少有一个元素通过了被提供的函数测试。它返回一个布尔值,如果至少有一个元素通过了测试则返回true,否则返回false。

前端相关

前端实现网页水印防移除的实战方案

独孤求败 独孤求败 发表于2026-01-23 浏览34 评论0

水印作为一种在网页上动态生成水印的解决方案,能够有效地在数据展示页面上添加个性化标记,此外,水印的存在本身也是一种警示,提醒每一位用户尊重数据隐私,在Web开发中,保护内容版权和防止信息泄露变得越来越重要,本文将详细介绍前端实现网页水印防移除的技术方案
传统水印方案的致命弱点
水印类型    移除方式    破解时间
DOM元素水印    DevTools删除节点    3秒
CSS背景水印    屏蔽样式/覆盖伪元素    5秒

DotNet相关

如何使用EFcore查询a表中符合b表列的值

独孤求败 独孤求败 发表于2026-01-23 浏览26 评论0

在Entity Framework Core (EF Core) 中,如果你想要查询表A中那些其某些列的值与表B中某一列的值相匹配的记录,你可以使用多种方法来实现这一需求。这里我将介绍几种常用的方法:
方法1:使用 Contains

假设你有两个实体类 A 和 B,你想要找到所有在表A中,其某个字段(例如 FieldA)的值在表B的某个字段(例如 FieldB)中存在的记录。