用于数据访问的 ReSharper
无论您使用哪种数据库和驱动程序/ORM,在应用程序中设置数据访问的任务都非常相似。 从创建实体到设置存储库,ReSharper 都能帮助您更好、更快地完成工作。
实体创建
实体是数据访问工作的核心,因为它们存储了来自数据库的数据。 在 ReSharper 中,有许多方法可以快速创建实体。 其中一种方法是在解决方案资源管理器中使用 Alt+Insert 快捷方式,这将为您提供熟悉的 生成 菜单,其中列出了可用的 文件模板:

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

然后,您会自动获得一个名为 人员 的类,存储在名为 Person.cs 的文件中。
或者,您可以让 ReSharper 从使用中推断类名及其成员。 例如,您可以输入一个类调用,然后按 Alt+Enter 来 生成 该类:

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

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

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

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

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

如果您选择所有属性并按 完成 ,您的类将获得以下生成的构造函数:
如果您希望您的实体可以比较并轻松托管在诸如 HashSet<T> 之类的集合中,您需要实现等值成员——这是一项难以正确完成的任务! 幸运的是,再次通过 ReSharper 的 生成 菜单,您可以找到一个 对应的选项 ,允许您实现:
等值运算符
==和!=正确的
Equals()重载以及(可选的)IEquatable<T>接口一个良好的
GetHashCode()方法
您可以信任 ReSharper 对所有属性进行特别处理——它会执行所有正确的空值检查,并根据比较的类型使用 Equals() 或 == 进行属性比较。
最后一个示例(还有许多其他可用选项)是自动创建一个 ToString() 方法。 同样,您可以选择参与的属性,选择后,ReSharper 会生成一个整洁的实现:
请注意,即使您的 ORM 已经为您构建了基本的实体类,这些功能仍然可用。 由于生成的类通常是部分类,您可以创建类的另一部分并在其上运行生成操作。
基础架构
在准备好实体后,就该设置用于与数据库交互的基础架构了。 当然,这取决于您使用的 ORM 或驱动程序,但这里我们将研究 NoRM 和 MongoDB 的使用。
假设您从以下代码开始:
我们可以做的第一件事是重构出数据库连接数据。 为此,让我们使用 ReSharper 的 重构 快捷方式 Control+Shift+R ,选择 new 语句,并选择 提取方法 选项:

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

以下是 ReSharper 生成的内容:
当然,原始调用被替换为 GetDatabase()。