使用 Fluent API 添加唯一标识符

凯恩775

我正在使用一个我无法控制的模型,我将其实例保存在 SQL 数据库中。

我正在使用 Fluent API 向此模型中的属性添加主键

modelBuilder.Entity<Message>().HasKey(d => d.DocumentId);

Message 看起来像这样:

[Required]
public Guid DocumentId { get; set; }
[Required]
public int Size { get; set; }
public string SenderId { get; set; }

但是,完全有可能以Message相同的DocumentId. 通常我会在使用类似的东西保存时让 SQL 添加一个唯一标识符[DatabaseGenerated(DatabaseGeneratedOption.Identity)],但由于我无法控制Message,我将如何处理?

任何提示都非常感谢。

伊万·斯托耶夫

幸运的是,EF Core 允许您定义和使用Shadow 属性作为 PK。

例如,以下 fluent 配置将创建名为“Id”的标识列并将其用作 PK:

modelBuilder.Entity<Message>()
    .Property<int>("Id")
    .ValueGeneratedOnAdd();

modelBuilder.Entity<Message>()
    .HasKey("Id");

ValueGeneratedOnAdd并且HasKey在这种情况下是多余的,因为按照约定命名为“Id”的属性是 PK,并且int按照约定的类型 PK 是自动生成的,但是为了完整起见,我已经添加了它们。

但请注意,使用影子 PK 会更难。添加很容易,但读取、更新和删除操作会出现问题。EF.Property方法可以在 LINQ 查询中使用以引用影子 PK,但通常您需要一些次要条件,以防您想要更新或删除记录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Fluent Api更改表名称标识

来自分类Dev

使用Fluent API

来自分类Dev

如何使用EF 6 Fluent Api添加复合唯一键?

来自分类Dev

如何使用R在缺少某些值的唯一标识符中添加缺失的零?

来自分类Dev

带有专用API的iBeacon唯一标识符

来自分类Dev

Stata:使用egen group()创建唯一标识符

来自分类Dev

使用某些唯一标识符识别Microsoft Band

来自分类Dev

使用purrr进行下采样。唯一标识符

来自分类Dev

可选的一对多关系使用实体框架(fluent Api)

来自分类Dev

使用Fluent API进行级联删除

来自分类Dev

使用Fluent API的EF外键

来自分类Dev

使用Fluent API指定索引填充因子?

来自分类Dev

使用Fluent API的EF外键

来自分类Dev

使用 fluent API 跟踪异步 Azure 操作

来自分类Dev

如何使用Fluent API使用ASC / DESC排序在多列上添加索引?

来自分类Dev

Web Push API:处理pushsubscriptionchange事件时获得唯一标识符

来自分类Dev

C#-使用枚举作为唯一标识符的替代方法

来自分类Dev

如何在VBA中使用唯一标识符引用Excel链接

来自分类Dev

FiddlerCore:使用Session.id作为唯一标识符是否安全?

来自分类Dev

Presto-使用唯一标识符连接多个表

来自分类Dev

如何使用初始化的模型作为模式打开的唯一标识符?

来自分类Dev

使用相同的唯一标识符更新重复数据

来自分类Dev

使用唯一标识符,将行值与R中的列名匹配

来自分类Dev

使用VBA在Access表中查找值而没有唯一标识符的情况

来自分类Dev

使用非唯一标识符更新和选择FIFO队列中的MySQL表

来自分类Dev

可以使用Ticks of DateTime.Now生成重复的唯一标识符吗?

来自分类Dev

C#-使用枚举作为唯一标识符的替代方法

来自分类Dev

Rails 4:使用唯一的字母数字标识符(不是主键)来联接表

来自分类Dev

使用XSLT从XML的段落内容创建ID(唯一标识符)

Related 相关文章

  1. 1

    使用Fluent Api更改表名称标识

  2. 2

    使用Fluent API

  3. 3

    如何使用EF 6 Fluent Api添加复合唯一键?

  4. 4

    如何使用R在缺少某些值的唯一标识符中添加缺失的零?

  5. 5

    带有专用API的iBeacon唯一标识符

  6. 6

    Stata:使用egen group()创建唯一标识符

  7. 7

    使用某些唯一标识符识别Microsoft Band

  8. 8

    使用purrr进行下采样。唯一标识符

  9. 9

    可选的一对多关系使用实体框架(fluent Api)

  10. 10

    使用Fluent API进行级联删除

  11. 11

    使用Fluent API的EF外键

  12. 12

    使用Fluent API指定索引填充因子?

  13. 13

    使用Fluent API的EF外键

  14. 14

    使用 fluent API 跟踪异步 Azure 操作

  15. 15

    如何使用Fluent API使用ASC / DESC排序在多列上添加索引?

  16. 16

    Web Push API:处理pushsubscriptionchange事件时获得唯一标识符

  17. 17

    C#-使用枚举作为唯一标识符的替代方法

  18. 18

    如何在VBA中使用唯一标识符引用Excel链接

  19. 19

    FiddlerCore:使用Session.id作为唯一标识符是否安全?

  20. 20

    Presto-使用唯一标识符连接多个表

  21. 21

    如何使用初始化的模型作为模式打开的唯一标识符?

  22. 22

    使用相同的唯一标识符更新重复数据

  23. 23

    使用唯一标识符,将行值与R中的列名匹配

  24. 24

    使用VBA在Access表中查找值而没有唯一标识符的情况

  25. 25

    使用非唯一标识符更新和选择FIFO队列中的MySQL表

  26. 26

    可以使用Ticks of DateTime.Now生成重复的唯一标识符吗?

  27. 27

    C#-使用枚举作为唯一标识符的替代方法

  28. 28

    Rails 4:使用唯一的字母数字标识符(不是主键)来联接表

  29. 29

    使用XSLT从XML的段落内容创建ID(唯一标识符)

热门标签

归档