Предотвращение кодирования Entity Framework Сначала генерирование постороннего внешнего ключа без использования Fluent? - PullRequest
0 голосов
/ 12 марта 2019

У меня есть следующие POCOS с данным отношением:

ProductTransferHistory [1-*] <-- ProductTransferHistoryEntry [1-*] <-- WipEntry

Код выглядит следующим образом:

public class ProductTransferHistory
{
    [Key]
    public Int32 ProductTransferHistoryId { get; set; }

    public DateTime TransactionDate { get; set; }

    [InverseProperty(nameof(ProductTransferHistoryEntry.ProductTransferHistory))]
    public ICollection<ProductTransferHistoryEntry> ProductTransferHistoryEntries { get; set; }

    public IList<ProductTransferHistoryEntry> EntriesWithName => ProductTransferHistoryEntries.Where(x => x.Name != null).ToList();
}

public class ProductTransferHistoryEntry
{
    [Key]
    public Int32 ProductTransferHistoryEntryId { get; set; }

    [ForeignKey(nameof(ProductTransferHistoryId))]
    public ProductTransferHistory ProductTransferHistory { get; set; }

    public Int32 ProductTransferHistoryId { get; set; }

    public String Name { get; set; }        

    [InverseProperty(nameof(WipEntry.ProductTransferHistoryEntry))]
    public virtual ICollection<WipEntry> WipEntries { get; set; }

    public IList<WipEntry> NonZeroWipEntries => WipEntries.Where(x => x.Quantity != 0).ToList();
}

public class WipEntry
{
    [Key]
    public Int32 WipEntryId { get; set; }

    [ForeignKey(nameof(ProductTransferHistoryEntryId))]
    public ProductTransferHistoryEntry ProductTransferHistoryEntry { get; set; }

    public Int32 ProductTransferHistoryEntryId { get; set; } // associated entry of ProductTransferHistoryId

    public Decimal Quantity { get; set; }
}

По какой-то причине, когда я добавляю миграцию, для ProductTransferHistoryEntriesВ таблице создаются два столбца внешнего ключа: ProductTransferHistoryId и столбец _ProductTransferHistory_Id_.А в таблице WipEntry создаются два столбца FK ProductTransferHistoryEntryId и _ProductTransferHistoryEntry_Id_.В обоих случаях второй FK обнуляется, что также не имеет смысла.

Проблема, похоже, заключается в свойствах коллекции nav.Я думал, что аннотация InverseProperty решит программу, но она все еще генерирует дополнительный FK.Если я удалю свойства коллекции nav, дополнительные столбцы не будут сгенерированы, но это не решение, так как мне нужны эти свойства для моего LINQ to Entities.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...