如何解决如何使用EF在2个数据库之间复制和粘贴表
我有2个数据库-一个用于实时数据库,另一个用于生产数据库
我需要实时复制一个问题,因此我认为最好的方法是将表从实时数据库复制到本地数据库!
这意味着将几个表(在我的SQLExpress数据库中是关系表)复制到我的本地SQL Server Compact数据库中。
我无法执行此操作,因为遇到以下异常
IEntityChangeTracker的多个实例不能引用一个实体对象。
我的努力是
var dc = new DalCf.StagePlanEntities(Bll.ProgramState.LIVE-ConnectionString); //query LIVE
var account = dc.Accounts.Single(a => a.EmailAddress.Contains(emailaddress));
dc = null; //does not remove the tracking
var localDc = new DalCf.StagePlanEntities(Bll.ProgramState.LOCAL-ConnectionString);//now LOCAL
localDc.Accounts.Add(account);
localDc.SaveChanges();
这是复制表格的最佳方法吗?
解决方法
dc.Accounts.Single()生成一个跟踪的实体。您可以在查询中添加“ .AsNoTracking()”以禁用此功能(针对该特定查询)。
var account = dc.Accounts.AsNoTracking().Single(a => a.EmailAddress.Contains(emailaddress));
https://docs.microsoft.com/en-us/ef/core/querying/tracking
默认情况下,返回实体类型的查询正在跟踪。这意味着您可以对这些实体实例进行更改,并通过SaveChanges()保留这些更改。在以下示例中,将检测到博客等级的更改并将其在SaveChanges()期间持久保存到数据库中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。