http://www.forfreezone.com

Modified模式的区别

数据库中有叁个City表

图片 1

 

起先时数据:

图片 2

 

 

实体类与Fluent Api配置映射

图片 3图片 4

public class City 
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public int? ParentId { get; set; }

    }

View Code

图片 5图片 6

public class CityMap : EntityTypeConfiguration<City>
    {
        public CityMap()
        {
            ToTable("City");
            HasKey(c => c.Id);
            Property(c => c.Name).HasMaxLength(50);
        }
    }

View Code

Modified模式的区别。Entity Framework 上下文类

 

图片 7图片 8

public class EFContext : DbContext
{
    public EFContext() : base("name=MyConnection")
    {

    }

    public DbSet<City> Citys  { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer<EFContext>(null);
        modelBuilder.Configurations.Add(new CityMap());
        base.OnModelCreating(modelBuilder);

    }

}

View Code

 

 

 

 方式豆蔻年华,使用Attach,并修改有些属性的值(注意,不是兼顾的品质都作修正)

using (var context = new EFContext())
{
//方式一
var entity = context.Citys.Find(4);
context.Citys.Attach(entity);
entity.Name = "肇庆";
context.SaveChanges();
}

将麦纳麦修正成了荆州,从Sql Profiler中能够见到,生成的update语句,只是改良了name列

图片 9

using (var context = new EFContext())
{
    //方式二
    var model = context.Citys.Find(5);
    model.Name = "潮州";
    context.Entry(model).State = System.Data.Entity.EntityState.Modified;
    context.SaveChanges();
}

将镇江改革成驻马店,注意,这一次未有改造ParentId,可是Sql Profiler中生成的言辞看出,Update语句矫正了具备列(主键除了这么些之外)

图片 10

将一个entity标志为System.Data.Entity.EntityState.Modified更新时会更新具备的列(而不唯有是改良了列),实际该应用哪个种类方法视场面而定。

谈到底数据库中多少为:

图片 11

 

参照他事他说加以考查资料:

https://stackoverflow.com/questions/30987806/dbset-attachentity-vs-dbcontext-entryentity-state-entitystate-modified

https://msdn.microsoft.com/en-us/data/jj592676

 

 

郑重声明:本文版权归澳门新葡8455最新网站所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。