Навигация по уникальному ключу возможна в 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 является уникальным.