У меня проблемы с определением отношения один к нулю или множества между двумя объектами в EF4.1.
Вот как выглядит моя объектная модель:
public class SubmittedTransaction
{
public int Batch_ID { get; set; }
public Int64 Batch_Detail_ID { get; set; }
public string Company_ID { get; set; }
public virtual ICollection<SubmittedSplitTransaction> Splits { get; set; }
}
Используя свободный API, вышеуказанный объект имеет составной PK, определенный как Batch_ID и Batch_Detail_ID.
public class SubmittedSplitTransaction
{
public Int64 Batch_Detail_ID { get; set; }
public string Company_ID { get; set; }
public decimal Sales_Amount { get; set; }
public decimal Revenue_Amount { get; set; }
}
Используя свободный API, вышеуказанный объект в качестве составного ПК определен как Batch_Detail_ID и Company_ID.
Это сопоставлено с существующей базой данных (TPT).
Основная идея здесь заключается в том, что SubmittedTransaction может иметь ноль для множества SubmittedSplitTransaction, связанных с ним. Навигация действительно должна быть только односторонней, от SubmittedTransaction до SubmittedSplitTransaction.
Что требуется в моем классе DBContext (переопределение OnModelCreating) или в моих классах отображения для отложенной загрузки из SubmittedTransaction в SubmittedSplitTransaction?
Любая помощь здесь будет очень ценится !!!
[EDIT]
Я принял ваш совет и внес следующие изменения:
public class SubmittedSplitTransaction
{
public Int64 Batch_Detail_ID { get; set; }
public string Company_ID { get; set; }
public decimal Sales_Amount { get; set; }
public decimal Revenue_Amount { get; set; }
public virtual SubmittedTransaction SubmittedTransaction { get; set; }
}
В своем классе DBContext я добавил следующее к переопределению OnModelCreating:
modelBuilder.Entity<SubmittedTransaction>().HasMany(s => s.Splits).WithRequired().Map(m => m.MapKey("Batch_Detail_ID"));
Я, должно быть, что-то здесь упускаю, потому что теперь я получаю следующее исключение:
The specified association foreign key columns 'Batch_Detail_ID' are invalid. The number of columns specified must match the number of primary key columns.
Отправленная транзакция имеет ключ Batch_ID и Batch_Detail_ID. Он может иметь ноль, одну или несколько SubmittedSplitTransactions, который имеет ключ Batch_Detail_ID и Company_ID. Какая конфигурация требуется вместо принятия соглашений о создании отношений между этими двумя объектами, поскольку то, что у меня есть выше, явно неверно?