"基于机器视觉的移动工件抓取在EF Core 2.1中的新特性"
EF Core 是 Entity Framework 的轻量级、高性能且适用于云的版本,它为.NET开发者提供了强大的ORM(对象关系映射)功能。在EF Core 2.1中,引入了一种新的模型构建特性——查询类型,这使得开发人员可以处理那些不需要映射到数据库实体的查询。
查询类型是一种特殊的非实体类型,它可以用于执行针对未映射到实体的数据库查询。它们在模型中扮演的角色与实体类型类似,但有一些显著的区别。首先,查询类型不需要定义键,因为它们不会被跟踪变化,也就不会涉及数据库的插入、更新或删除操作。其次,查询类型不会被约定自动发现,且只支持部分导航映射功能,如通过`ModelBuilder.Query`方法而不是`ModelBuilder.Entity`方法来配置。
查询类型主要有以下几种用途:
1. 作为`FromSql()`即时查询的返回类型,允许直接执行SQL查询并获取结果。
2. 映射到数据库视图,提供对只读数据的访问。
3. 映射到没有定义主键的表,这在处理无主键的特殊数据集时非常有用。
4. 映射到在模型中定义的查询,定义为第二次查询的数据源。
使用`ToView` fluent API 可以将查询类型映射到数据库对象,这表示从EF Core的角度看,这些对象被视为只读的查询源,不适合更新、插入或删除操作。然而,数据库对象不一定是真正的视图,也可以是一个表,只要配置得当,即使视图也可以进行更新。
在EF Core中,实体类型和查询类型之间存在明确的区分。实体类型可以参与数据库的CRUD(创建、读取、更新、删除)操作,而查询类型则仅用于读取。实体类型不能包含指向查询类型的导航属性,但查询类型可以包含指向实体的导航属性,从而允许在查询类型和实体类型之间建立关联。
在升级和移植方面,EF Core 提供了从早期版本(如EF6)升级的路径,包括从基于EDMX的模型和基于代码的模型进行移植的指导。同时,EF Core 随着每个版本的更新,都会引入新的特性和功能,例如在EF Core 3.0预览版和2.1、2.0、1.1、1.0等版本中的变化,以及如何进行不同版本间的升级。
为了更好地利用EF Core,开发者需要了解如何安装、配置数据库连接字符串、日志记录、测试策略(如使用SQLite或InMemory数据库进行单元测试)、模型创建(包括包含和排除类型、属性、键、索引、关系等),以及如何使用迁移管理数据库架构。此外,还包括查询数据(如基本查询、加载关联数据、原始SQL查询、异步查询等)和保存数据(如基本保存、关联数据、级联删除、并发冲突处理等)的操作。
EF Core 2.1中的查询类型是一个强大的工具,允许开发人员灵活地处理数据库中的非实体数据,同时保持了与实体类型之间的良好隔离。通过理解和利用这一特性,可以更高效地设计和实现数据库驱动的应用程序。