一、需求,在界面上显示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>
}