EF
Install-Package EntityFramework —>EF连接数据的程序包的命令
EF中中对象有五个状态: Detached (游离态,脱离态)、Unchanged (未改变)、Added (新增)、Deleted (删除)、Mrdified (被修改)。
<connectionStrings>
<add name="Sqlsever" connectionString="Data Source=.; Initial Catalog=Test2;User ID=sa;Passw·ord=123456;MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
</connectionStrings>//连接数据库的连接字符串` ToTable("T_Persons"); //数据库的名字
this.Property(a => a.Name).HasMaxLength(20); //设计数据库类型的长度`
this.Property(p => p.Name).IsFixedLength(); //设置数据库类型固定长度
this.Property(o => o.Name).HasMaxLength(20).IsRequired().IsFixedLength().IsUnicode(false);//总和设置
public string ClassID { get; set; } //主键
public virtual Classes Classes { get;set;} //指向外键(可以设置多个外键)
总结一对多、多对多的,最佳实践
一对多的最佳方法(不配置一端的集合属性):
多端
public class studnent
{
public long ID{get;set;}
public string Name{get;set;}
public long classID{get;set;}
public virtual Class{get;set;}
}
一端
public class Class
{
public long ID{get;set;}
public string Name{get;set;}
}
在多端的模型中配置strundentcongfig中:
this.HasRequired(e => e.Class).WithMany().HasForeignKey(e=>e.ClassId);s
多对多的最佳配置
两端模型
public class Student
{
public long ID {get;set;}
public string Name{get;set;}
public virtual ICollection<Teacher> Teachers{get;set;}=new List<Teachaer>();
}
publiuc class Teacher
{
public long ID {get;set;}
public string Name {get;set}
public virtual ICollection<Student> students {get;set} = new List<Student>();
}
在其中一端的配置(studentconfig)
this.HasMany(e=>e.Teacher).withMany(e=>e.Student).Map(m=>m.Totable("2表的关系表").MapLeftKey("StudetID").MapRightKey("Teacher");