資料庫中有一個City表 初始時數據: 實體類與Fluent Api配置映射 public class City { public int Id { get; set; } public string Name { get; set; } public int? ParentId { get; se ...
資料庫中有一個City表
初始時數據:
實體類與Fluent Api配置映射
public class City
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
}
View Code
public class CityMap : EntityTypeConfiguration<City>
{
public CityMap()
{
ToTable("City");
HasKey(c => c.Id);
Property(c => c.Name).HasMaxLength(50);
}
}
View Code
Entity Framework 上下文類
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列
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語句修改了所有列(主鍵除外)
將一個entity標記為System.Data.Entity.EntityState.Modified更新時會更新所有的列(而不僅是修改了列),實際該使用哪種方式視場合而定。
最後資料庫中數據為:
參考資料:
https://msdn.microsoft.com/en-us/data/jj592676