MVC5 Entity Framework 6数据库字段和实体属性的个数是否要一样
实体类:
public class ORDERS
{
public Int32 ID { get; set; }
public String USERS { get; set; }
public String DATES { get; set; }
public String XUHAO { get; set; }
public String XDFS { get; set; }
public Decimal PRICE { get; set; }
public String HAOMA { get; set; }
public String COLOR { get; set; }
public String SX { get; set; }
public decimal PAY { get; set; } //这个PAY属性在数据库表实际是不存在的,但是有个方法的别名会映射到,所以加了一个这样的字段
}
MVC控制器下的方法1:
public ActionResult Index(int page=1)
{
using (SqlConnection myConn = new SqlConnection(strConn))
{
using (var jinbuDB = new Models.jinbu(myConn, false))
{
ViewData["pagecount"] = Math.Ceiling(jinbuDB.ORDERS.ToList().Count / 2.0);
var orders = jinbuDB.ORDERS.OrderBy(i => i.ID).Skip((page - 1) * 2).Take(2).ToList();
ViewData["currPage"] = page;
return View(orders);
}
}
}
因为在表ORDERS中是不存在PAY字段的,所以运时就会报错:列名 'PAY' 无效。
方法2:
public ActionResult Details()
{
using (SqlConnection myConn = new SqlConnection(strConn))
{
using (var jinbuDB = new Models.jinbu(myConn, false))
{
var orders = jinbuDB.Database.SqlQuery<Models.ORDERS>("select *,dbo.GetPay(ID) PAY from dbo.ORDERS");
var myOrders = orders.ToList();
return View(myOrders);
}
}
}
这个方法是自定义的一个SQL语句,里面有个dbo.GetPay(ID)函数别名取的就是PAY,这个方法运行就正常
两个方法共用ORDERS实体,如何解决Index方法不报错呢:列名 'PAY' 无效。?还是说两个方法要用两个不同的实体才可以解决??