MVC5 Entity Framework 6数据库字段和实体属性的个数是否要一样

david_88888 2014-09-23 10:55:30
实体类:
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' 无效。?还是说两个方法要用两个不同的实体才可以解决??
...全文
192 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
david_88888 2014-09-23
  • 打赏
  • 举报
回复
引用 2 楼 gaoyiddf 的回复:
你可以在字段上加上 [NotMapped]这样就可以不跟数据库映射了
兄弟, [NotMapped]这个属性是在哪个命名空间下,我的是EF6,System.Data.Entity.ModelConfiguration.Conventions;引用这个也不行
gaoyiddf 2014-09-23
  • 打赏
  • 举报
回复
你可以在字段上加上 [NotMapped]这样就可以不跟数据库映射了
  • 打赏
  • 举报
回复
还不如自定义一个类。 你直接修改模版生成的类文件,edm哪天一更新,你添的这个成员不就没了吗。。。。
david_88888 2014-09-23
  • 打赏
  • 举报
回复
搞定了,.net4.5 [NotMapped]这个属性在System.ComponentModel.DataAnnotations.Schema这个命名空间. 结贴!!

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧