Навигация по уникальному ключу возможна в Entity Core 1.0?

Есть ли способ иметь свойства навигации к уникальным клавишам в EF Core? Я попытался "притвориться", что уникальный ключ был внешним ключом в свободном API, но я получил ошибку времени выполнения (см. Комментарий).

Я знаю, что в EF Core есть альтернативные ключи, но я не уверен, можно ли использовать альтернативные ключи для свойств навигации?

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        //runtime error: Method not found: 'Blog Post.get_Blog()'.
        modelBuilder.Entity<Post>()
            .HasOne(p => p.Blog)
            .WithMany(b => b.Posts)
            .HasForeignKey(p => p.BlogUrl)
            .HasPrincipalKey(b => b.Url);
    }
}

public class Blog
{
    public int BlogId { get; set; } //PK for Blog
    public string Url { get; set; } //Unique Key 

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; } //PK for Post
    public string Title { get; set; }
    public string Content { get; set; }

    public string BlogUrl { get; set; }
    public Blog Blog { get; set; }
}

Примечание: я создал свою базу данных, и скафолинг не дал навигационных свойств. Post.BlogUrl НЕ является иностранным ключом для Blog.Url. Тем не менее, Blog.Url является уникальным.

0 ответов

Другие вопросы по тегам