Ответы пользователя по тегу Entity Framework
  • Стоит ли заморачиваться с проверкой не совпадения Guid?

    @oleg_ods
    Теоретически это возможно, но вероятность настолько ничтожна что ей можно пренебречь.

    Цитата из wiki:
    Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2^128 или 3,4028×10^38), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала.
    Ответ написан
    Комментировать
  • Откуда берется новая таблица после переопределения IdentityRole?

    @oleg_ods
    У ApplicationUser и ApplicationRole связь many-to-many. Для ее обслуживания создается дополнительная таблица.

    Если хотите использовать для связи таблицу UserRoles это надо указать явно.

    Пример из документации:

    internal class MyContext : DbContext
    {
        public MyContext(DbContextOptions<MyContext> options)
            : base(options)
        {
        }
    
        public DbSet<Post> Posts { get; set; }
        public DbSet<Tag> Tags { get; set; }
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Post>()
                .HasMany(p => p.Tags)
                .WithMany(p => p.Posts)
                .UsingEntity<PostTag>(
                    j => j
                        .HasOne(pt => pt.Tag)
                        .WithMany(t => t.PostTags)
                        .HasForeignKey(pt => pt.TagId),
                    j => j
                        .HasOne(pt => pt.Post)
                        .WithMany(p => p.PostTags)
                        .HasForeignKey(pt => pt.PostId),
                    j =>
                    {
                        j.Property(pt => pt.PublicationDate).HasDefaultValueSql("CURRENT_TIMESTAMP");
                        j.HasKey(t => new { t.PostId, t.TagId });
                    });
        }
    }
    
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
    
        public ICollection<Tag> Tags { get; set; }
        public List<PostTag> PostTags { get; set; }
    }
    
    public class Tag
    {
        public string TagId { get; set; }
    
        public ICollection<Post> Posts { get; set; }
        public List<PostTag> PostTags { get; set; }
    }
    
    public class PostTag
    {
        public DateTime PublicationDate { get; set; }
    
        public int PostId { get; set; }
        public Post Post { get; set; }
    
        public string TagId { get; set; }
        public Tag Tag { get; set; }
    }
    Ответ написан
    2 комментария
  • Как определить время запросов EF Core?

    @oleg_ods
    Включить логгирование запросов. тыц
    Ответ написан
    Комментировать
  • Как сделать поле, помимо ID, уникальным?

    @oleg_ods
    В методе OnModelCreating

    modelBuilder.Entity().HasIndex(x => x.YourProp).IsUnique();
    Ответ написан
    Комментировать
  • Как реализовать отношение один к одному в Entity Framework?

    @oleg_ods
    У меня есть 3 сущности User, Mentor и Student. Mentor и User имеют связь один к одному, Student и User тоже имеют связь один к одному.


    Возможно у Вас не 3 сущности, а 2. User (имя, дата рождения, и тд. ) и Role (User, Mentor, Student).

    Также и них должны быть одинаковые Id. То есть когда мы хотим добавить объект Mentor, уже должен быть объект User с таким же Id. Также и со Student.


    Бред.

    ID - это синтетический ключ. Некое искусственное уникальное поле назначение которого однозначно идентифицировать строку в базе. Строить на его базе какую либо логику нельзя.

    Я просто новичок в Entity Framework

    Проблема не в том что Вы новичок в EF, а в том что Вы новичок в проектировании БД.

    Для начала разберитесь в связях (как они реализуются, для чего используются и тд. ), а потом уже разбирайтесь с EF.
    Ответ написан
    Комментировать
  • Как убрать данную ошибку?

    @oleg_ods
    Нет библиотеки SqlServer. NuGet
    Ответ написан
    Комментировать