zoukankan      html  css  js  c++  java
  • Entity Framework 第三篇 实体特性声明

    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  等等




  • 相关阅读:
    win下发现两个有用的快捷键
    java.sql.SQLException: Access denied for user 'somebody'@'localhost' (using password: YES)
    记一次面试经历(互联网金融行业)
    FindBugs规则整理
    (转)定制findbugs规则
    Docker学习(一)
    HDU3368+枚举
    计算几何题目汇总(转)
    POJ2225+BFS
    POJ2209+水题!
  • 原文地址:https://www.cnblogs.com/njcxwz/p/5581340.html
Copyright © 2011-2022 走看看