具有现有数据库的实体框架核心配置



在我的一个项目中,我使用的是现有的SQL Server数据库。所有数据库脚本都使用DBUp和SQL脚本迁移进行管理。

在我的应用程序中,我使用实体框架核心与此数据库进行通信。当我在EF配置中配置实体时,我是否还应该定义IsRequired()HasMaxLenth()等函数。?

我没有使用这些EF配置来生成迁移脚本;所有的迁移都在EF之外。我只是使用这些配置来与数据库通信。

当我在EF配置中配置实体时,我是否还应该定义IsRequired((、HasMaxLenth((等函数。?

除了表和列名映射以及数据类型映射之外,这不是必需的,但前端组件可能会使用其他模型元数据进行验证。

一般来说,是的,您应该保留它们。这些配置中的许多都在EF中使用,以便在运行时做出决策。例如,如果EF知道列从不为NULL,最大长度用于配置它发送到数据库的SQL参数,并且在SaveChanges期间使用唯一约束对SQL语句进行排序,则可以进一步优化某些查询。

虽然一些东西,如约束名称、非唯一索引、索引过滤器和序列,目前还没有在运行时使用,但很难知道EF会使用和不会使用哪些,所以最好保留它们。

有时,如果映射不精确,数据库功能(如在SQL Server上始终加密(将完全失败。

最新更新