Entity framework 6 FluentMigrator中的NotMapping和AsNoTracking等效项

Entity framework 6 FluentMigrator中的NotMapping和AsNoTracking等效项,entity-framework-6,fluent-migrator,Entity Framework 6,Fluent Migrator,Fluent Migrator.Net ORM中的NotMapped属性和AsNoTracking方法的等价物是什么。我正在将一个使用EF6作为ORM的项目迁移到Fluent Migrator。我在谷歌上搜索了很多关于这个的信息,但是找不到任何有用的信息 是一个用于管理数据库模式的开源项目,声称是一个类似于Ruby on Rails迁移的.Net实现,您应该在github上发布该项目的问题和反馈,因为他们的社区在2020年仍然活跃 由于Fluent Migrator本身不是ORM,它只管理数据模

Fluent Migrator.Net ORM中的NotMapped属性和AsNoTracking方法的等价物是什么。我正在将一个使用EF6作为ORM的项目迁移到Fluent Migrator。我在谷歌上搜索了很多关于这个的信息,但是找不到任何有用的信息

是一个用于管理数据库模式的开源项目,声称是一个类似于Ruby on Rails迁移的.Net实现,您应该在github上发布该项目的问题和反馈,因为他们的社区在2020年仍然活跃

由于Fluent Migrator本身不是ORM,它只管理数据模式,因此问题的形式不正确

EF有自己的模式迁移管理,它解释
[NotMapped]
从数据库模式中省略该字段,并在将查询结果映射到数据对象模型时忽略该字段

从EF到NHibernate或Dapper的项目转换通常是NHibernate或Dapper,对于这个响应,我将假设NHibernate,因为如果您仍在使用EF,则问题不存在,但如果您使用不同的ORM,希望思维过程将帮助您找到答案

回复:
NotMapped
如上所述,EF中的
NotMapped
属性由数据模式迁移和ORM解释。在Fluent Migrator的配置中,您可以手动指定要在数据模式中操作的字段,因此只需在Create/Alter table语句中完全忽略该字段

如果要将某个字段更改为不再存储在数据库中,则可以添加
Delete.Column
命令:

Delete.Column("ColumnName".FromTable("TableName").InSchema("dbo");
更新:Linq2Db解决方案: 使用属性

在像NHibernate这样的ORM中,情况也是如此,只是不在映射配置中映射属性

  • 当您使用NHibernate的自动映射扩展时,会经历不同的解决方案
回复:
AsNoTracking
如果您仍然使用EF6作为ORM,那么这一点不会改变,Fluent Migrator就是这样 关于模式维护和操作,而不是数据查询

AsNoTracking()
在EF查询中禁用更改跟踪和缓存,并且作为一种副产品,允许查询在单个响应中返回具有重复键值的多个记录,OP不清楚使用了什么上下文
AsNoTracking()
,但重要的是要确定为什么使用“可能”

更新:linq2Db 据我所知,Linq2Db不跟踪更改,它的主要功能是将Linq查询转换为SQL并执行该SQL,这表示
AsNoTracking
具有缓存含义,因此我在Linq2Db中能找到的最接近于创建一个不会缓存执行的作用域:

using (var db = new MyDataConnection())
using (NoLinqCache.Scope())
{
   var query = db.Users.Where(x => Sql.Ext.In(x.Id, ids));
}
对于使用NHibernate的读者,您可以参考。
您可以使用将会话中的所有查询设置为只读

session.DefaultReadonly = true
或者,您可以将单个查询设置为只读:

query.SetReadonly(true);

您应该包括一个您正在转换的代码的示例,或者您希望在这两种情况下使用的代码的示例,您在这里还提出了两个不同的问题,一个是关于类设计和配置的,另一个是关于执行的…Fluent Migrator取代了EF代码优先迁移,但它没有取代EF作为ORM,你在使用什么ORM?@chrischaller linq2Db是我正在使用的ORM我已经更新了我的解决方案,我们不应该将此用作讨论,但是如果你使用迁移和更改跟踪,为什么要从EF过渡?听起来你可能走错了方向。@Chrischaller我们正在使用nopCommerce框架并升级到他们的最新版本。在最新的nopCommerce框架中,他们用Fluent Migrator替换了EF,Linq2db更新了这个答案,以包括Linq2db解决方案,因为特定的ORM最初被OP省略了