繁体   English   中英

如何修复 System.InvalidOperationException 错误?

[英]How to fix System.InvalidOperationException error?

我正在尝试使用 Entity Framework 连接两个表,但出现System.InvalidOperationException错误。 错误信息是:

属性“MasterCompany”不是实体类型“UnitOfMeasure”的导航属性。 'Include(string)' 方法只能与 '.' 一起使用。 导航属性名称的分隔列表。`。

我不确定它为什么会扔它。

其他尝试:

  1. 我还尝试添加public virtual MasterCompany MasterCompany { get; set; } public virtual MasterCompany MasterCompany { get; set; } public virtual MasterCompany MasterCompany { get; set; }UnitOfMeasure中,但会引发Invalid column error
  2. 还在MasterCompany表中为MasterCompanyId添加了[Key]
  3. 但是这两个更改都会引发Invalid column name 'IsDeleted'. 错误。

DAL 型号:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
{
  public DbSet<UnitOfMeasure> UnitOfMeasure { get; set; }
  public DbSet<MasterCompany> MasterCompany { get; set; }
}

public class UnitOfMeasure : PasBase, IAudit
{
    [Key]
    public long UnitOfMeasureId { get; set; }
    public string Description { get; set; }
    public string ShortName { get; set; }
    public string Memo { get; set; }
    public string Standard { get; set; }
    // [ForeignKey("MasterCompanyId")]
    public Int32 MasterCompanyId { get; set; }
    public bool IsActive { get; set; }
    public bool IsDeleted { get; set; }
    [NotMapped]
    public string UploadStatus { get; set; }
    [ForeignKey("MasterCompanyId")]
    public virtual MasterCompany MasterCompany { get; set; }
}

public class MasterCompany:AuditableEntity
{
    public int MasterCompanyId { get; set; }
    public string CompanyName { get; set; }
    public string TaxId { get; set; }
    public string EmailAddress { get; set; }
    public string Address { get; set; }
    public bool? IsActive { get; set; }
}

存储库:

private ApplicationDbContext _appContext => (ApplicationDbContext)_context;

public IEnumerable<DAL.Models.UnitOfMeasure> getUnitOfMeasureData()
{
    return _appContext.UnitOfMeasure
        .Include("MasterCompany")
        .Where(c => c.IsDeleted == false || c.IsDeleted == null)
        .OrderByDescending(c => c.UnitOfMeasureId)
        .ToList();
}

您需要在 class UnitOfMeasure中添加MasterCompany属性

public class UnitOfMeasure : PasBase, IAudit
{
    [Key]
    public long UnitOfMeasureId { get; set; }
    public string Description { get; set; }
    public string ShortName { get; set; }
    public string Memo { get; set; }
    public string Standard { get; set; }
    public Int32 MasterCompanyId { get; set; }
    [ForeignKey("MasterCompanyId")]
    public MasterCompany MasterCompany { get; set; }
    public bool IsActive { get; set; }
    public bool IsDeleted { get; set; }
    [NotMapped]
    public string UploadStatus { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM