首先得你的ef dll版本在4.1以上

第一步贴第一个类

由于字段太多就写一部分

 [Table("NavF")]//设置表名称
    public class NavF
    {
        [Key]//主键
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]//设置自增
        public int ID { get; set; }
        [Required]//要求所需字段不能为空
        [MaxLength(500)]//字段最大长度
        [Column("NTitle")]//设置映射到数据库的名称
        public string NTitle { get; set; }
        [Required]
        [Column("NOrder")]
        public int NOrder { get; set; }
        [Required]
        [MaxLength(10)]
        [Column("NType")]
        public string NType { get; set; }
        public IList<NavT> navTList = new List<NavT>();//设置关联属性
        public virtual IList<NavT> NavTList
        {
            get { return navTList; }
            set { navTList = value; }
        }
    }

[Table("NavT")]
    public class NavT
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }
        [Required]
        [MaxLength(500)]
        [Column("NTitle")]
        public string NTitle { get; set; }
        [Required]
        [MaxLength(500)]
        [Column("Note")]
        public string Note { get; set; }
        public int NavF_ID { get; set; }//外键名称
        private NavF navF;
        [ForeignKey("NavF_ID")]//映射外键名称
        public NavF NavF
        {
            get { return navF; }
            set { navF = value; }
        }
    }

--------------------------------------------------

第二部就是 DBcontext类

 public class DBContextStu : DbContext
    {
        public DBContextStu() : base("constr")
        {
            Database.SetInitializer(
                new DropCreateDatabaseIfModelChanges<DBContextStu>());//只要发生改变就删除数据库
            //Database.SetInitializer(
            //        new CreateDatabaseIfNotExists<DBContextStu>());  //不存在才进行创建
        }
        public DbSet<NavF> NavF { get; set; }
        public DbSet<NavT> NavT { get; set; }
  
    }

=============================================================

第三部数据库连接字符串constr与dbcontext类中的构造函数参数一致

<add name="constr" connectionString="Data Source=.;Initial Catalog=AST;User ID=sa;Password=sa" providerName="System.Data.SqlClient" />

--------------------------------------------------------------------------------------------------

数据库操作下一节一个dal通用类封装得不是很好

关于这个管理属性添加数据有点麻烦

public DBContextStu db = new DBContextStu();

public int AddORUpdate(NavT modelT, int PID)
        {
            NavF model=db.NavF.Single(u => u.ID == PID);
            modelT.NavF = model;
            modelT.NavF_ID = PID;
            db.NavT.AddOrUpdate(modelT);
            //Console.WriteLine(db.NavT.ToList().Count);
            return db.SaveChanges();
        }

基于注解的EF的更多相关文章

  1. Java基于注解和反射导入导出Excel

    代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...

  2. 基于注解的bean配置

    基于注解的bean配置,主要是进行applicationContext.xml配置.DAO层类注解.Service层类注解. 1.在applicationContext.xml文件中配置信息如下 &l ...

  3. Spring7:基于注解的Spring MVC(下篇)

    Model 上一篇文章<Spring6:基于注解的Spring MVC(上篇)>,讲了Spring MVC环境搭建.@RequestMapping以及参数绑定,这是Spring MVC中最 ...

  4. Spring6:基于注解的Spring MVC(上篇)

    什么是Spring MVC Spring MVC框架是一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...

  5. 基于注解的Spring AOP入门、增强Advice实例

    这篇文章简单通过一个例子,介绍几种增强的基本配置,以方便spring框架初学者对aop的代码结构有个清楚的了解认识.首先,spring支持aop编程,支持aspectJ的语法格式来表示切入点,切面,增 ...

  6. Struts2基于注解的Action配置

    使用注解来配置Action的最大好处就是可以实现零配置,但是事务都是有利有弊的,使用方便,维护起来就没那么方便了. 要使用注解方式,我们必须添加一个额外包:struts2-convention-plu ...

  7. Mybatis框架基于注解的方式,实对数据现增删改查

    编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...

  8. 基于注解的Spring AOP的配置和使用

    摘要: 基于注解的Spring AOP的配置和使用 AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程.可以通过预编译方式和运行期动态代理实现在不 ...

  9. 基于注解的Spring AOP示例

    基于注解的Spring AOP示例 目录 在XML配置文件中开启 @AspectJ 支持 声明切面及切入点 声明通知 测试 结语 在XML配置文件中开启 @AspectJ 支持 要使用Spring的A ...

随机推荐

  1. Delphi窗体最大化按钮不可用情况下的最大化

    最大化按钮不可用,而且窗体最大化,我以前一直这样设置:在Object Inspector下把BorderIcons属性下的biMaximize属性设置为False,然后把WindowState属性设置 ...

  2. mysl lock table read

    <pre name="code" class="html">Session 1: mysql> use zjzc; Reading table ...

  3. egret-android-support-gradle版

    从3.1.3开始,Egret已经实现了Gradle构建!所以下文你爱看不看! 迟钝的Egret从3.1.3版本才开始支持Gradle,而笔者早在1.6.x版本就已经支持了,说明什么?说明Egret在某 ...

  4. C++顺序性容器、关联性容器与容器适配器

    什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...

  5. Mvc里查询商品页面

    /// <summary> /// 商品小类筛选页面 GoodsTypeName ----------------SelectGoods--商品筛选 --图文 /// Home/Selec ...

  6. JAVA 年轻代收集器 第九节

    JAVA 年轻代收集器  第九节 继续上一章所讲的,STW即GC时候的停顿时间,他会暂停我们程序中的所有线程.如果STW所用的时间长而且次数多的话,那么我们整个系统稳定性以及可用性将大大降低. 因此我 ...

  7. perl 打开和关闭文件

    #!/usr/bin/perl -w use strict; #print "please input a string\n"; #my $line = <STDIN> ...

  8. 如何设置MySQL数据库名、表名大小写敏感

    在 MySQL 中,数据库和表其实就是数据目录下的目录和文. 因而,操作系统的敏感性决定数据库和表命名的大小写敏感.这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Un ...

  9. 项目从Codeigniter 2.2升级至 Codeigniter 3.0的一些注意事项

    1. 替换掉system目录下所有的文件和文件夹,以及替换掉index.php 2. controllers和models中的文件首字母都需要改成大写:application.php -> Ap ...

  10. Generative Learning algorithms

    "generative algorithm models how the data was generated in order to categorize a signal. It ask ...