首页 > 代码库 > 基于注解的EF

基于注解的EF

首先得你的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