我正处于构建新应用程序的早期阶段。我使用的是EF6.1.1,我的大多数表都有一个uniqueidentifier列,我设置了StoreGenerated = Identity。
当我创建新记录时,会为他们分配一个新的Guid,一切正常。
出于测试/调试的目的,我编写了一些代码来将一些表写入XML文件。当我导入这个文件时,EF仍会生成一个新的Guid。
在这种情况下,我不希望EF生成新的Guid。我想保留原始的Guids,因为不这样做会破坏外键。我已经设置了StoreGenerated = None,这解决了问题,但它似乎非常不优雅,它需要我手动创建所有的Guids。
我需要说服EF让我在这个案例中设置Guid。有没有办法在运行时更改StoreGenerated属性?
答案 0 :(得分:0)
您无法在运行时更改StoreGenerated
属性值(或 - 实际上 - 任何EF元数据)。您需要决定是否要插入密钥或让数据库生成它们,EF将相应地播放。 GUID很容易,因为即使您在客户端上生成密钥,也不必公开它 - 例如,您始终可以在构造函数中分配密钥值,并使EF覆盖它从数据库中实现的实体。您甚至可以将密钥设置器设为私有,以免其他任何人设置该值。