How-To: Using the N* Stack, part 4
📅 2026/7/6 3:45:55
👁️ 次浏览
data 工程、 NHibernate.dll 、 FluentNHibernate.dll 和 NUnit.Framework.dll 添加进来。如果你安装了 NUnit NUnit.Framework.dll 可以在 .NET 选项卡里看到。如果你安装了多个版本的 NUnit 的话一定要注意选择的版本。SQL: 在一个方便的旅行装如果你之前没有听说过 SQLite 你会喜欢上它的。这是一个很小的、独立的、并且开源的SQL数据库引擎。更好的是它可以完全的运行在内存当中并且速度非常快。下面是如何设置并且使用它下载 SQLite 提供的 ADO.NET Provider 。下载完整版文件名类似 SQLLit-1.0.65.0-setup.exe。安装完成之后将 System.Data.Sqlite.dll 拷贝到Solution Items 文件夹并且添加到你所有工程的引用当中。下载 SQLite 类库。文件名类似 sqlitedll-3_6_17.zip。提取 SQLite3.dll 到 Solution Items 文件夹。将 System.Data.SQLite.dll 添加到测试工程的引用中。由于 SQLite3.dll 是用 C 编写的是非托管的我们不能直接引用它。为了正确的引用它我们需要其设置成为内容文件。在测试项目上点击右键选择添加现有项添加 SQLite3.dll 。在解决方案资源管理器中找到这个文件点击右键选择属性将它设置为始终复制。这样就会在每次生成项目的时候会自动的将这个文件复制到 bin\Debug 或 bin\Release 目录里。在我以前的随笔里有一个 SQLiteDatabaseScope 类的代码你可以把它添加到你的测试工程里。一个简单的映射测试using System; using System.Linq; using NUnit.Framework; using NHibernate; namespace NStackExample.Data.Tests { [TestFixture] public class CourseMappingTests { [Test] public void CanSaveAndLoadCourse() { using (SQLiteDatabaseScopeCourseMapping Scope new SQLiteDatabaseScopeCourseMapping()) { using (ISession Session Scope.OpenSession()) { Guid ID; Course Course; using (ITransaction Tran Session.BeginTransaction()) { ID (Guid)Session.Save(new Course { Subject SUBJ, CourseNumber 1234, Title Title, Description Description, Hours 3 }); Tran.Commit(); } Session.Clear(); using (ITransaction Tran Session.BeginTransaction()) { Course Session.GetCourse(ID); Assert.AreEqual(SUBJ, Course.Subject); Assert.AreEqual(1234, Course.CourseNumber); Assert.AreEqual(Title, Course.Title); Assert.AreEqual(Description, Course.Description); Assert.AreEqual(3, Course.Hours); Tran.Commit(); } } } } } }下面介绍下它如何工作首先在建立架构的时候获取到一个新的内存中的 SQLite 数据库将 course 保存到数据库中清空 session从数据库中获取到 course测试所有属性以确保它们都是正确的这里你需要知道几件事TestFixture 属性。这是告诉 NUnit 在这个类当中包含测试。Test 属性。这是告诉 NUnit 这个方法是一个测试方法。建议不要使用隐式事务你可能在疑惑为什么我将这些简单的数据库逻辑封装在一个事务中特别是 Session.Get 这只是一个单一的选择语句。在写本系列教程之前我也不会这样做的这是一个新手的错误。在做这项研究的时候我看到了 Ayende 写的 一个测试示例 。他对所有的操作都使用事务甚至是 Session.Get 。我问他为什么这样做的时候他给我发了一个链接NHProfiler Alert 。这一点是非常重要的而且不是显而易见的至少对我来说是这样的。具体的内容大家可以去之前的链接看一下。一个稍微复杂的映射测试在某些时候我们的实体需要有一个父亲例如 section 所以必须在测试孩子之前需要先创建并插入父亲。我们不在此进行级联测试这是一个单独的测试。在这里 section 必须要有两个父亲course 和 term。[Test] public void CanSaveAndLoadSection() { using (SQLiteDatabaseScopeCourseMapping Scope new SQLiteDatabaseScopeCourseMapping()) { using (ISession Session Scope.OpenSession()) { Guid ID; Section Section; Course Course new Course { Subject SUBJ, CourseNumber 1234, Title Title, Description Description, Hours 3}; Term Term new Term { Name Fall 2009, StartDate new DateTime(2009,8,1), EndDate new DateTime(2009,12,1)}; // 我们不在这里进行级联测试所以显式的保存父对象。 using (ITransaction Tran Session.BeginTransaction()) { Session.Save(Course); Session.Save(Term); Tran.Commit(); } Session.Clear(); using (ITransaction Tran Session.BeginTransaction()) { ID (Guid) Session.Save(new Section { Course Course, FacultyName FacultyName, RoomNumber R1, SectionNumber W1, Term Term}); Tran.Commit(); } Session.Clear(); using (ITransaction Tran Session.BeginTransaction()) { Section Session.GetSection(ID); Assert.AreEqual(Course, Section.Course); Assert.AreEqual(FacultyName, Section.FacultyName); Assert.AreEqual(R1,Section.RoomNumber); Assert.AreEqual(W1, Section.SectionNumber); Assert.AreEqual(Term, Section.Term); Tran.Commit(); } } } }
Alternative Mod Launcher:XCOM 2模组管理终极解决方案 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/…
📅 2026/7/6 3:45:55
荐系统的排序模型,长期以来沿用一种固定的两阶段范式:先用序列建模(Sequence Modeling)模块(例如 DIN、LONGER)对用户历史行为序列进行编码,得到压缩的用户兴趣表示;再将其与用户画像…
📅 2026/7/6 3:43:55
NinChat-实时资讯检索系统,AI时代的搜索基础设施
使用ninchat-skills时需要提供两个参数:ninchat_base_url和ninchat_api_key,其中ninchat_base_url目前固定为:https://ninchat-api.cpolar.top。ninchat_api_key需要登录web也申请…
📅 2026/7/6 3:43:55
League Akari:英雄联盟玩家的智能助手,告别BP阶段的决策焦虑 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit
还在为英雄…
📅 2026/7/6 5:04:10
AI 多人待办助手:分配任务之前,先处理确认关系
一、自动分配听起来聪明,却容易制造误会
多人生活场景里的待办助手,常见需求是“帮我安排谁做什么”。AI 可以根据时间、地点和历史习惯提出建议,但如果直接自动分配任务…
📅 2026/7/6 5:04:10
线性回归模型选择:R 与 Adjusted R 的3个关键差异与5个实战应用场景在数据分析的世界里,线性回归模型就像一把瑞士军刀,简单却功能强大。但当我们面对多个预测变量时,如何判断哪个模型才是"最佳"选择?这时&a…
📅 2026/7/6 5:04:10
XCOM 2模组管理的终极解决方案:Alternative Mod Launcher完全指南 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/g…
📅 2026/7/6 5:04:10
PyFluent架构革新:Python原生接口实现CFD仿真自动化与性能突破 【免费下载链接】pyfluent Pythonic interface to Ansys Fluent 项目地址: https://gitcode.com/gh_mirrors/pyf/pyfluent
PyFluent作为Ansys Fluent的Python原生接口,通过架构创新将…
📅 2026/7/6 5:04:10
LD2410雷达传感器库:如何在5分钟内构建智能人体检测系统 【免费下载链接】ld2410 An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. 项目地址: https://gitcode.com/gh_mirrors/ld/ld2410
LD2410是一款高性能的24GHz FMCW(调…
📅 2026/7/6 5:02:09
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray
你是否厌倦了Windows任务栏上密密麻麻的图标&…
📅 2026/7/6 0:01:19
1. 项目概述:一次对React Server Components核心安全机制的深度剖析 最近在安全研究圈里,CVE-2025-55182这个编号被频繁提及,它直指React生态中一个相对较新的概念——React Server Components(RSC)。作为一个长期关注…
📅 2026/7/6 0:01:20
星露谷物语终极MOD指南:5个步骤打造智能自动化农场 【免费下载链接】StardewMods Mods for Stardew Valley using SMAPI. 项目地址: https://gitcode.com/gh_mirrors/st/StardewMods
你是否厌倦了在星露谷物语中重复收割、加工、存储的繁琐操作?梦…
📅 2026/7/6 0:01:20
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/5 0:01:51
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/5 0:01:51
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/5 0:01:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/5 6:01:04
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/5 6:01:04
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/5 23:45:08