通过实体模型获取数据ASP.NET WEB API中的关系表

时间:2017-01-18 15:52:04

标签: c# asp.net entity-framework asp.net-web-api entity-framework-6

我正在创建一个web api来获取所有与国家/地区对象的交易,货币在这里是外键。

我有一个方法

的控制器
   [Route("transactions")]
        public IHttpActionResult GetCountries()
        {
            return Ok(db.PAY_TRANSACTION);
        }

这是我的实体模型

 public partial class PAY_TRANSACTION
    {
        public PAY_TRANSACTION()
        {
            this.PAY_BATCH_TRANSACTION = new HashSet<PAY_BATCH_TRANSACTION>();
            this.PAY_TRANSACTION_DETAIL = new HashSet<PAY_TRANSACTION_DETAIL>();
        }

        public int ID { get; set; }
        public int CMN_INSTITUTE_ID { get; set; }
        public int USER_ID { get; set; }
        public int MAS_COUNTRY_ID { get; set; }
        public int CMN_CURRENCY_ID { get; set; }
        public double AMOUNT_PAYING { get; set; }
        public double EXCHANGE_RATE { get; set; }
        public double AMOUNT_FX { get; set; }
        public System.DateTime CREATED_ON { get; set; }
        public int CREATED_BY { get; set; }
        public System.DateTime UPDATED_ON { get; set; }
        public int UPDATED_BY { get; set; }
        public bool IS_DELETED { get; set; }
        public bool IS_APPROVED { get; set; }
        public int VERSION_NO { get; set; }

        public virtual CMN_CURRENCY CMN_CURRENCY { get; set; }
        public virtual CMN_INSTITUTE CMN_INSTITUTE { get; set; }
        public virtual MAS_COUNTRY MAS_COUNTRY { get; set; }
        public virtual ICollection<PAY_BATCH_TRANSACTION> PAY_BATCH_TRANSACTION { get; set; }
        public virtual ICollection<PAY_TRANSACTION_DETAIL> PAY_TRANSACTION_DETAIL { get; set; }
    }

当我请求方法时,我收到此错误:

  

无效的列名称&#39; MAS_COUNTRY_ID1&#39;。\ r \ n无效的列名称&#39; CMN_INSTITUTE_ID1&#39;。\ r \ n无效的列名称&#39; CMN_CURRENCY_ID1&#39;。

当我设置[ForeignKey(&#34; CMN_INSTITUTE_ID&#34;)],[ForeignKey(&#34; MAS_COUNTRY_ID&#34;)]时, [ForeignKey(&#34; CMN_CURRENCY_ID&#34;)],我得到了这个回复

{
  "ID": 7,
  "CMN_INSTITUTE_ID": 2,
  "USER_ID": 3,
  "MAS_COUNTRY_ID": 1,
  "CMN_CURRENCY_ID": 2,
  "AMOUNT_PAYING": 123,
  "EXCHANGE_RATE": 1.2,
  "AMOUNT_FX": 22,
  "CREATED_ON": "2017-01-18T17:50:16.993",
  "CREATED_BY": 0,
  "UPDATED_ON": "2017-01-18T17:50:16.993",
  "UPDATED_BY": 0,
  "IS_DELETED": false,
  "IS_APPROVED": false,
  "VERSION_NO": 0,
  "CMN_CURRENCY": null,
  "CMN_INSTITUTE": null,
  "MAS_COUNTRY": null,
  "PAY_BATCH_TRANSACTION": [],
  "PAY_TRANSACTION_DETAIL": []
}

显示我的MAS_COUNTRY,CMN_INSTITUTE,CMN_CURRENCY NULL

1 个答案:

答案 0 :(得分:1)

在访问(:dialogue)之前,这些相关实体不会被加载。在您的情况下,您在发送之前不会访问这些实体,因此这些属性永远不会被加载。 您Lazy Loading

可以Eager Load这些实体