Guest User

Untitled

a guest
Aug 29th, 2018
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. using System;
  2. using System.ComponentModel.DataAnnotations.Schema;
  3. using Microsoft.EntityFrameworkCore;
  4.  
  5. namespace EFCoreGuidEmptyRepro
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. using (var db = new MyDbContext())
  12. {
  13. var capsId = Guid.NewGuid();
  14. db.Capses.Add(new CapsEntity
  15. {
  16. Id = capsId
  17. });
  18. db.CapsShares.Add(new CapsShare
  19. {
  20. CapsId = capsId,
  21. UserId = Guid.Empty
  22. });
  23. db.SaveChanges();
  24. }
  25. }
  26. }
  27.  
  28. class MyDbContext : DbContext
  29. {
  30. public DbSet<UserEntity> Users { get; set; }
  31. public DbSet<CapsEntity> Capses { get; set; }
  32. public DbSet<CapsShare> CapsShares { get; set; }
  33.  
  34. protected override void OnModelCreating(ModelBuilder modelBuilder)
  35. {
  36. modelBuilder.Entity<UserEntity>().ForNpgsqlUseXminAsConcurrencyToken();
  37.  
  38. modelBuilder.Entity<CapsEntity>().ForNpgsqlUseXminAsConcurrencyToken();
  39.  
  40. modelBuilder.Entity<CapsShare>().HasKey(s => new { s.CapsId, s.UserId });
  41. modelBuilder.Entity<CapsShare>().HasOne(s => s.Caps).WithMany().HasForeignKey(s => s.CapsId);
  42. modelBuilder.Entity<CapsShare>().HasOne(s => s.User).WithMany().HasForeignKey(s => s.UserId);
  43. modelBuilder.Entity<CapsShare>().ForNpgsqlUseXminAsConcurrencyToken();
  44. }
  45.  
  46. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  47. {
  48. optionsBuilder.UseNpgsql("Host=localhost;Database=efdebug;Username=postgres;Password=Add1t1v3", options =>
  49. {
  50. options.UseNetTopologySuite();
  51. options.EnableRetryOnFailure();
  52. });
  53. optionsBuilder.EnableSensitiveDataLogging();
  54. }
  55. }
  56.  
  57. [Table("users")]
  58. class UserEntity
  59. {
  60. [Column("id")]
  61. public Guid Id { get; set; }
  62. }
  63.  
  64. [Table("capses")]
  65. class CapsEntity
  66. {
  67. [Column("id")]
  68. public Guid Id { get; set; }
  69. }
  70.  
  71. [Table("caps_shares")]
  72. class CapsShare
  73. {
  74. [Column("caps_id")]
  75. public Guid CapsId { get; set; }
  76. [Column("user_id")]
  77. [DatabaseGenerated(DatabaseGeneratedOption.None)]
  78. public Guid UserId { get; set; }
  79.  
  80. public CapsEntity Caps { get; set; }
  81. public UserEntity User { get; set; }
  82. }
  83. }
Add Comment
Please, Sign In to add comment