Сопоставьте один-ко-многим 2 таблицам одновременно - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть 2 таблицы IncomingCheck и OutgoingCheck, которые содержат множество элементов History .Чтобы добиться этого, я использовал наследование и унаследовал 2 класса для входящей и исходящей истории.

public class IncomingCheck
{
    [Key]
    public int Id { get; set; }
    public virtual IList<IncomingCheckHistory> History { get; set; }
    //... other stuff
}

public class OutgoingCheck
{
    [Key]
    public int Id { get; set; }
    public virtual IList<OutgoingCheckHistory> History { get; set; }
    //... other stuff
}

public class CheckHistory
{
    [Key]
    public int Id { get; set; }
    //... other stuff
}

public class IncomingCheckHistory : CheckHistory
{
    public IncomingCheck IncomingCheck { get; set; }
}

public class OutgoingCheckHistory : CheckHistory
{
    public OutgoingCheck OutgoingCheck { get; set; }
}

Этот подход работает отлично.В моей базе данных у меня есть таблица с именем CheckHistories с двумя обнуляемыми столбцами с именами [IncomingCheck_Id] и [OutgoingCheck_Id].

Теперь я создал представление на IncomingCheck, которое я создал в Sql Server Management Studio, и ямогу получить свои данные, используя EF:

public class ViewIncomingCheck
{
    [Key]
    public int Id { get; set; }
    public virtual IList<IncomingCheckHistory> History { get; set; }
    //... other stuff
}

Пока все хорошо, но теперь я хочу, чтобы Entity Framework автоматически загружал элементы History, но при попытке загрузить данные я получаю следующую ошибку:

SqlException: Invalid column name 'ViewIncomingCheck_Id'. Invalid column name 'ViewIncomingCheck_Id'.

Я предполагаю, что EF ищет столбец с именем ViewIncomingCheck_Id в таблице IncomingCheckHistory, но не может его найти.

Isесть способ сказать EF, что он должен использовать IncomingCheck_Id вместо ViewIncomingCheck_Id?

...