Отношение один ко многим без свойства навигации - PullRequest
0 голосов
/ 26 января 2012
public class MyEntity
{
    public int MyEntityID { get; set; }
    public int Foo { get; set; }


    public ICollection<MyEntityDetail> MyEntityDetails { get; set; }
}

public class MyEntityDetail
{
    [Key, Column(Order=0)]
    public int PK { get; set; } // this will be the MyEntityID from MyEntity
    [Key, Column(Order = 1)]
    public int OtherPK { get; set; } // this will be manually set
    public string Bar { get; set; }
}

public class MyEntityContext : DbContext
{
    public DbSet<MyEntity> MyEntities { get; set; }
    public DbSet<MyEntityDetail> MyEntityDetails { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

Я думаю, что приведенный выше код объясняет, чего я пытаюсь достичь с помощью кода инфраструктуры объектов. 4.2. Обратите внимание, что MyEntityDetail не содержит свойства навигации для MyEntity.Как я могу связать MyEntityID из MyEntity в PK из MyEntityDetail ??если мне нужно, я могу добавить свойство навигации MyEntity в класс MyEntityDetail, но я не хочу использовать дополнительную память для свойства, к которому у меня никогда нет доступа.и этот тип объектов будет использоваться более 100 раз в моем проекте.спасибо

1 Ответ

0 голосов
/ 26 января 2012

К сожалению, вы не можете этого сделать. В случае отношения один-к-одному для PK можно использовать FK, но в отношении один-ко-многим это невозможно, поскольку PK дочерней таблицы (таблицы MyEntityDetail) является уникальным значением, которое нельзя дублировать

...