实体框架数据库“第一身份列”是否被覆盖?

时间:2020-07-22 15:11:05

标签: asp.net-mvc entity-framework frameworks entity ef-database-first

我有一个MVC-Project,它具有来自生产数据库的DB-First EDMX文件。 假设表Person有一个名为ID的身份列。 我还拥有该数据库的副本,在该数据库中,我已关闭了ID列的Identity-Option。我的目标是在这两个数据库之间同步数据。 为了连接到这些数据库中的每一个,我使用带有不同连接字符串的相同上下文类。 问题是,当我尝试将表Person中的行的副本从productionDB添加到我的copyDB时,我得到一个错误,因为EntityFramework试图为ID列插入NULL。我知道这是完全正常的,因为EDMX文件已将表Person的ID列的标识设置为TRUE,但是有没有办法以编程方式更改此行为?

Context prod = new Context("ProductionConnectionString");
Context prodCopy = new Context("CopyConnectionString");

var prodEntity = prod.Person.First(); \\ RETURNS A PERSON WITH ID 1
prodCopy.Person.Add(prodEntity):
prodCopy.SaveChanges(); \\THIS WILL THROW AN EXCEPTION BECAUSE EF WILL REPLACE 1 WITH NULL BECAUSE IDENTITY OPTION

有什么想法吗?

0 个答案:

没有答案