码迷,mamicode.com
首页 > 其他好文 > 详细

Entity Framework 第三篇 实体特性声明

时间:2016-06-13 18:36:25      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

Entity Framework中对实体的特性声明有着严格的要求

1.实体必须要有主键特性,但是如果实体没有主键特性那怎么办?

  public int ExecuteSqlCommand(string sql, params SqlParameter[] paras)
        {
            if (this.IsTransaction)
            {
                if (dbContext.Database.CurrentTransaction == null)
                {
                    dbContext.Database.BeginTransaction();
                }
            }
            return dbContext.Database.ExecuteSqlCommand(sql, paras);
        }

只能采用执行comand来折中解决,为什么引入了事务机制?因为我们在执行一个事务操作时候,很可能会 DbSet<T>的增删改操作和command操作混用,但是为了满足事务的要求,所以引入DbContextTransaction

2.实体必须表名特性,主键特性

 [Table("Shop")]
    public class Shop
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
        public int? ShopID { get; set; }
        public string Name { get; set; }
DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)表示非自增的主键列

3.实体不需要映射的时候,声明特性
  [NotMapped]
        public string ShopName { get; set; }
        [NotMapped]
        public List<S_Roles> RolesList { get; set; }

注意NotMapped会使增删改查的语句忽略掉改字段,但是也会是下面方法失效,也就是声明了NotMapped特性的字段,实体的值反射不出来了

 public IEnumerable<T> GetList<T>(string strsql)
        {
            return dbContext.Database.SqlQuery<T>(strsql).ToList();
        }

4.实体类型必须要和数据表字段类型一致

比如tinyint 类型要对应byte  等等




Entity Framework 第三篇 实体特性声明

标签:

原文地址:http://www.cnblogs.com/njcxwz/p/5581340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!