Entity Framework 第三篇 实体特性声明
2016-06-13 17:24
387 查看
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操作混用,但是为了满足事务的要求,所以引入DbContextTransaction2.实体必须表名特性,主键特性
[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 等等
相关文章推荐
- [Javascript] MetaProgramming: function name
- Centos7静态IP的设置
- 数据库导入错误
- [置顶] MySQL server has gone away 问题的解决方法
- ubuntu16.04下安装mariadb
- 数据结构--哈夫曼树
- 实验7.6哈夫曼编码
- Swift-基础-3
- easyui combobox动态加载数据和设置默认值
- 面试题11 :O(1)删除单链表节点
- Jmeter--HTTPS请求
- 工作流引擎Oozie(二):coordinator
- tableView 代理与数据源的抽离,减少与 controller的耦合
- 欢迎使用CSDN-markdown编辑器
- Swift-基础-2
- Android Studio(AS)-->导入项目
- AD域控制器所有使用的端口明细列表
- msp430单片机通过串口向上位机发送浮点数
- 多线程编程注意点
- Android Studio(AS)-->导入项目