基于注解的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();
}