实体框架6.1.1-当StoreGenerated为Identity时,以编程方式设置ID
本文关键字:编程 方式 ID 设置 Identity 框架 StoreGenerated 实体 | 更新日期: 2023-09-27 18:21:30
我正处于构建新应用程序的早期阶段。我使用的是EF6.1.1,我的大多数表都有一个uniqueidentifier列,并且我设置了StoreGenerated=Identity。
当我创建新记录时,他们会被分配一个新的Guid,一切都很好。
出于测试/调试的目的,我编写了一些代码,将一些表写入XML文件。当我导入这个文件时,EF仍然会生成一个新的Guid。
在这种情况下,我不希望EF生成新的Guid。我想保留最初的Guid,因为不这样做会破坏外键。我已经将StoreGenerated设置为None,这解决了问题,但它看起来非常不雅,需要我手动创建所有Guid。
在这种情况下,我需要说服EF让我设置Guid。有没有办法在运行时更改StoreGenerated属性?
您不能在运行时更改StoreGenerated
属性值(事实上,也不能更改任何EF元数据)。您需要决定是插入密钥还是让数据库生成密钥,EF将相应地播放。GUID有点容易,因为即使你在客户端上生成密钥,你也不必公开它——例如,你总是可以在构造函数中分配一个键值,并让EF覆盖它从数据库中具体化的实体。您甚至可以将密钥设置器设置为私有的,以不让其他人设置该值。