ReSharper 2025.2 Help

用于数据访问的 ReSharper

无论您使用哪种数据库和驱动程序/ORM,在应用程序中设置数据访问的任务都非常相似。 从创建实体到设置存储库,ReSharper 都能帮助您更好、更快地完成工作。

实体创建

实体是数据访问工作的核心,因为它们存储了来自数据库的数据。 在 ReSharper 中,有许多方法可以快速创建实体。 其中一种方法是在解决方案资源管理器中使用 Alt+Insert 快捷方式,这将为您提供熟悉的 生成 菜单,其中列出了可用的 文件模板

“用于数据访问的 ReSharper”教程

在上述菜单中选择 ,系统会提示您为类命名:

“用于数据访问的 ReSharper”教程

然后,您会自动获得一个名为 人员 的类,存储在名为 Person.cs 的文件中。

或者,您可以让 ReSharper 从使用中推断类名及其成员。 例如,您可以输入一个类调用,然后按 Alt+Enter生成 该类:

“用于数据访问的 ReSharper”教程

以类似的方式,ReSharper 还可以帮助您生成类成员。 例如,您可以尝试分配一个名为 名称 的属性,ReSharper 会提供创建该属性的选项:

“用于数据访问的 ReSharper”教程

ReSharper 会正确猜测类型,但允许您更改它:

“用于数据访问的 ReSharper”教程

另一种构建实体的方法是使用 实时模板。 由于 ReSharper 在安装时自动导入了 Visual Studio 模板,您可以使用例如 prop 模板快速向实体添加属性:

“用于数据访问的 ReSharper”教程

实体构建

尽管在许多情况下,您可能希望尽量保持实体的简单性,但有时需要为实体添加额外的功能。 例如,初始化构造函数可以使您的实体更易于使用。 幸运的是,对于这种情况,我们有 ReSharper 的 生成菜单 Alt+Insert。 此菜单允许您向现有类型添加各种功能。

假设您想为我们的 Person 类型添加一个完全初始化的构造函数。 为此,请在类中按 Alt+Insert ,然后选择 构造函数

用于数据访问的 ReSharper

系统会显示一个对话框,询问您希望初始化哪些属性:

用于数据访问的 ReSharper

如果您选择所有属性并按 完成 ,您的类将获得以下生成的构造函数:

public Person(string name, int age) { Name = name; Age = age; }

如果您希望您的实体可以比较并轻松托管在诸如 HashSet<T> 之类的集合中,您需要实现等值成员——这是一项难以正确完成的任务! 幸运的是,再次通过 ReSharper 的 生成 菜单,您可以找到一个 对应的选项 ,允许您实现:

  • 等值运算符 ==!=

  • 正确的 Equals() 重载以及(可选的) IEquatable<T> 接口

  • 一个良好的 GetHashCode() 方法

您可以信任 ReSharper 对所有属性进行特别处理——它会执行所有正确的空值检查,并根据比较的类型使用 Equals()== 进行属性比较。

最后一个示例(还有许多其他可用选项)是自动创建一个 ToString() 方法。 同样,您可以选择参与的属性,选择后,ReSharper 会生成一个整洁的实现:

public override string ToString() { return string.Format("Name: {0}, Age: {1}", Name, Age); }

请注意,即使您的 ORM 已经为您构建了基本的实体类,这些功能仍然可用。 由于生成的类通常是部分类,您可以创建类的另一部分并在其上运行生成操作。

基础架构

在准备好实体后,就该设置用于与数据库交互的基础架构了。 当然,这取决于您使用的 ORM 或驱动程序,但这里我们将研究 NoRM 和 MongoDB 的使用。

假设您从以下代码开始:

void AddPerson() { using (var m = new Mongo("personnel", "localhost", "27017", string.Empty)) { var coll = m.GetCollection<Person>("people"); var p = new Person("Jack", 20); coll.Insert(p); } }

我们可以做的第一件事是重构出数据库连接数据。 为此,让我们使用 ReSharper 的 重构 快捷方式 Control+Shift+R ,选择 new 语句,并选择 提取方法 选项:

“用于数据访问的 ReSharper”教程

因此,ReSharper 为您提供了配置方法的选项。 我们将其命名为 GetDatabase()

“用于数据访问的 ReSharper”教程

以下是 ReSharper 生成的内容:

private static Mongo GetDatabase() { return new Mongo("personnel", "localhost", "27017", string.Empty); }

当然,原始调用被替换为 GetDatabase()

最后修改日期: 2025年 9月 27日