.net mvc 外键表数据读取

一、需求,在界面上显示a表的数据,某字段需要显示的是b表的数据

二、表结构如下

a表如下

CREATE TABLE `T_Sku` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `SkuId` varchar(64) DEFAULT '',     
  `Code` varchar(64) DEFAULT '',
  `MeasurementsContractId` int(11) DEFAULT 0,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

b表如下

CREATE TABLE `T_MeasurementsContract` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Width` decimal(10,2) DEFAULT '0.00',   
  `Height` decimal(10,2) DEFAULT '0.00',
  `Length` decimal(10,2) DEFAULT '0.00',
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

三、代码注意

1.model类的

(1)表a的

       [Required]
        public string SkuId { get; set; }

        [Required]
        public string Code { get; set; }

        public int MeasurementsContractId { get; set; }

        [ForeignKey("MeasurementsContractId")]

        public virtual T_MeasurementsContract measurementsContract { get; set; }

(2)表b的


        [Required]
        public decimal Width { get; set; }

        [Required]
        public decimal Height { get; set; }

        [Required]
        public decimal Length { get; set; }

        public virtual ICollection<T_Sku> skus { get; set; }

2.代码方法如下

 public IEnumerable<T_Sku> GetSkuPage(int pageIndex, int pageSize)
        {
            using (FurnitureDbContext dbContext = new FurnitureDbContext())
            {
                IQueryable<T_Sku> list = dbContext.skus;
                return list.OrderBy(a => a.ID).Include(a => a.measurementsContract).ToPagedList(pageIndex, pageSize);
            }
        } 

需要注意的是Include必须的

3.Control类封装如下

    public ActionResult Index()
        {

                int pageIndex = Convert.ToInt32(Request.QueryString["pageIndex"]);
                int pageSize = 10; //当记录数小于pagesize,分页控件将不出现
                var result = this.FurnitureService.GetSkuPage(pageIndex, pageSize);

           
            return View(result);
        }

4.界面调用如下

                               <tbody>
                                    @foreach (var m in Model)
                                    {
                                        var index = Model.IndexOf(m) + 1;
                                        <tr>
                                            <td>@index.ToString()</td>
                                            <td>@m.Code</td>
                                            <td>@m.measurementsContract.Length</td>
                                            
                                        </tr>
                                    }
                                </tbody>

猜你喜欢

转载自blog.csdn.net/loveheronly/article/details/79491170
今日推荐