Связать навигационное свойство, используя часть PK - PullRequest
0 голосов
/ 25 октября 2018

Предполагая, что у нас есть следующие db

enter image description here

, и у нас есть следующие классы

class Context : DbContext
{
    public DbSet<Control> Control { get; set; }
    public DbSet<LanguageResource> LanguageResource { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<LanguageResource>()
            .HasKey(l => new { l.LanguageResourceId, l.CultureCode });

        modelBuilder.Entity<Control>()
            .HasKey(c => c.ControlId);
    }
}
class Control
{
    public int ControlId { get; set; }
    public int LanguageResourceId { get; set; }
    public ICollection<LanguageResource> LanguageResources { get; set; }
}
class LanguageResource
{
    public int LanguageResourceId { get; set; }
    public string CultureCode { get; set; }
    public string Text { get; set; }
}

Есть ли способнастроить Context для связи Control.LanguageResourceId с LanguageResource.LanguageResourceId для заполнения Control.LanguageResources.

Я думаю сделать что-то подобное ... но, очевидно, это не работает ..: D

var control =
    context
    .Control
    .Include(c => c.LanguageResources)
    .First();

/// {
///   ControlId : 1
///   LanguageResources : [
///     {
///       LanguageResourceId : 1,
///       CultureCode : en-US
///       Text : Hello
///     },
///     {
///       LanguageResourceId : 1,
///       CultureCode : en-CA
///       Text : Hi
///     }
///   ]
/// }

У меня есть только доступ только для чтения к базе данных, поэтому изменение таблицы / полей не может быть и речи.:)

Мы используем EF6, но я хотел бы знать, можно ли это сделать и в EF Core.:)

...