繁体   English   中英

如何在实体框架中有条件地生成DatabaseGenerated GUID

[英]How to conditionally generate DatabaseGenerated GUID in Entity Framework

我将Entity Framework 6用作与SQL Server数据库对话的ORM。 插入新记录时有两种情况:

  1. 记录的GUID为空,在这种情况下,我添加了属性

    DatabaseGenerated(DatabaseGeneratedOption.Identity)]

    在我的POCO上我的ID字段上方,数据库很高兴为我的记录生成一个新的顺序GUID。

    这种情况最适合建立索引。 我的客户首先与一个API对话,该API试图将记录插入数据库并让数据库生成顺序GUID。


  1. 记录的GUID已经设置,在这种情况下,应该在数据库中设置GUID。 但是,EF忽略了这一点,无论如何都要求数据库生成一个新的顺序GUID。

    这种情况是在客户端脱机或无法访问API的情况下。 在这种情况下,它将使用自己生成的GUID将数据持久存储在本地,然后尝试将其保存到数据库中。

我已经进行了一些搜索,但似乎找不到任何方法来仅有条件地要求数据库生成一个新的GUID(如果尚未设置)。 这可能吗?

谢谢!

是。 EF的使用方法AddOrUpdate

参见添加或更新

您不能同时拥有两个。 在这种情况下,您正在配置EF,以便在每次插入记录时让数据库创建一个新ID,并且EF始终会这样做。 当记录被跟踪为插入时,它将始终遵循此行为。

您需要一种方法来跟踪哪些实体无法访问要插入的服务器,以及客户端应用程序何时在线能够同步更改。

我将创建不同的本地数据关系,以允许跟踪本地存储中的实体。 这需要付出更多的努力,但值得付出努力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM