Entity Framework пытается выбрать несуществующий столбец - PullRequest
0 голосов
/ 01 декабря 2018

Я использую Entity Framework 6.0 и определил 2 POCO для сопоставления с моей базой данных:

[Table("PortfolioGroups")]
public class PortfolioGroup : AuditableEntity<int>
{
    [Column("Company_Id")]
    public int CompanyId { get; set; }

    [ForeignKey("CompanyId")]
    public Company Company { get; set; }

    public string Name { get; set; }
    public string Description { get; set; }

    public ICollection<PortfolioGroupItem> PortfolioGroupItems { get; set; }

    public PortfolioGroup()
    {
        PortfolioGroupItems = new Collection<PortfolioGroupItem>();
    }
}

И PortfolioGroupItem:

[Table("PortfolioGroupItems")]
public class PortfolioGroupItem : AuditableEntity<int>
{
    [Column("PortfolioGroup_Id")]
    public int PortfolioGroupId { get; set; }

    [ForeignKey("PortfolioGroupId")]
    public PortfolioGroup PortfolioGroup { get; set; }

    [Column("Trademark_Id")]
    public int? TrademarkId { get; set; }

    [ForeignKey("TrademarkId")]
    public Trademark.Trademark Trademark { get; set; }

    [Column("TrademarkRegistration_Id")]
    public int? TrademarkRegistrationId { get; set; }

    [ForeignKey("TrademarkRegistrationId")]
    public TrademarkRegistration TrademarkRegistration { get; set; }

    [Column("Domain_Id")]
    public int? DomainId { get; set; }

    [ForeignKey("DomainId")]
    public Domains.Domain Domain { get; set; }
}

Однако - когда я пытаюсь сделать запросPortfolioGroups, Entity Framework по какой-то причине пытается запросить поле с именем «Trademark_Id» - которого нет в сущности PortfolioGroup:

Context.PortfolioGroups.SingleOrDefault(i => i.Id == id && i.CompanyId == companyId);

Броски: Неверное имя столбца 'Trademark_Id'.

Я использовал этот вид настройки в других местах моего приложения без каких-либо проблем.Я просто не могу понять, почему EF пытается запросить столбец, который не входит в мою сущность!

Буду признателен за любые предложения.Я в конце моей веревки здесь.

Спасибо, ребята!:)

1 Ответ

0 голосов
/ 04 декабря 2018

Проблема в том, что вы добавили свойство навигации в товарный знак, для которого требуется внешний ключ в портфельной группе:

public class Trademark
{
    [Key]
    public int Id { get; set; }

    [MaxLength(250)]
    [Required]
    public string Name { get; set; }

    [MaxLength(150)]
    public string Filename { get; set; }

    public ICollection<PortfolioGroup> PortfolioGroups { get; set; }

    public Trademark()
    {
        PortfolioGroups = new Collection<PortfolioGroup>();
    }
}

EF ожидает, что у PortfolioGorup будет столбец Trademark_ID для хранения того, какие группы портфолио связаны сТоварный знак.

...