В моем проекте есть две таблицы: User и InvoiceLine.
Было указано, что InvoiceLine
может иметь User
, известный как Checker.
Мои модели:
public class InvoiceLine : IEntity
{
public virtual int Id { get; set; }
public virtual int? CheckerId { get; set; }
public virtual string CreatedByUserName { get; set; }
public virtual DateTime CreatedDateTime { get; set; }
public virtual string LastModifiedByUserName { get; set; }
public virtual DateTime? LastModifiedDateTime { get; set; }
// Navigation properties
public virtual User Checker{ get; set; }
}
public class User : IEntity
{
public int Id { get; set; }
public string CreatedByUserName { get; set; }
public DateTime CreatedDateTime { get; set; }
public string LastModifiedByUserName { get; set; }
public DateTime? LastModifiedDateTime { get; set; }
//Navigation properties
public virtual ICollection<InvoiceLine> InvoiceLines { get; set; }
}
Так что все в порядке, у меня есть отношение от 0 до 1 ко многим от User
до InvoiceLine
.
Это означало, что с Linq я мог получитьInvoiceLines, которые пользователь должен проверить:
user.InvoiceLines
Однако есть еще одно требование, чтобы InvoiceLine
также имел Auditor
, поэтому я изменил InvoiceLine
на:
public class InvoiceLine : IEntity
{
public virtual int Id { get; set; }
public virtual int? CheckerId { get; set; }
public virtual int? AuditorId { get; set; }
public virtual string CreatedByUserName { get; set; }
public virtual DateTime CreatedDateTime { get; set; }
public virtual string LastModifiedByUserName { get; set; }
public virtual DateTime? LastModifiedDateTime { get; set; }
// Navigation properties}
public virtual User Checker { get; set; }
public virtual User Auditor { get; set; }
}
Так что я действительно хотел пойти:
user.InvoiceLines
и получить Checkers
и Auditors
или, альтернативно, получить их отдельно через:
user.CheckerInvoiceLines
user.AuditorInvoiceLines
Я получаюnull назад от user.InvoiceLines
, хотя это и понятно.
Может ли кто-нибудь указать мне правильное направление о том, как использовать Linq для получения InvoiceLines
от User
?
Редактировать обновление:
Код конфигурации моей модели такой:
public class VectorCheckContext : DbContext
{
...
public DbSet<InvoiceLine> InvoiceLines { get; set; }
public DbSet<User> Users { get; set; }
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}
}