使用EF自带的EntityState枚举和自定义枚举实现单个和多个实体的增删改查

本文目录

之前使用EF都是通过调用SaveChanges方法把增加/修改/删除的数据提交到数据库,但是上下文是如何知道实体对象是增加、修改还是删除呢?答案是通过EntityState枚举来判断的,看一个方法:

        /// <summary>
/// 查看实体状态
/// </summary>
private static void GetOneEntityToSeeEntityState()
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
var destination = context.Destinations.Find();
EntityState stateBefore = context.Entry(destination).State;
Console.WriteLine(stateBefore);
}
}

注:使用EntityState需添加引用system.data
跑下程序,输出结果为:Unchanged。从英文意思便可以猜到一二:取出来的数据是Unchanged,那么添加、修改、删除自然也就是Added、Modified、Deleted了。在EntityState上按F12定位到其定义看看:

aaarticlea/png;base64,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yOl77W6Iej99K64E740+md6CWpinEIdgX+yZ6S2oBe+hHbwHRZb0nvn30AjegyJLej+9BFgdvAdFRL3f39+J3zky7z2VskVyxitqJN5OEVa9b9VeQuJ9tL9iM4EjORsrqirKvKncvaKFwPtR3rfumJHxXtP1rx7A+8ism3wiTWkmjJOedn2sImOfZa/j3Wx5LzvI2cS9T963bz/8RPOjmXK4YqSiRsyja0RFq4D307w3zyGH5ZwjctRJgffz472ZeME457CiB4P3872/SbyXGu6v6r053SCY+Ll+v1m/8MwgmsfX0kAlX70Um4MVddjHbkVJyvT9ew2i3k/finsi5P30FtTCPIURSAX7De9BE7wHRZb0nvn30Mh63gO0g/egyHDv1S4UwBJcYSTew93Ae1AE70ERvAdFLjIS9eFWEO9BEbwHRfAeFMF7UIT7taAIRoIieA+KrPf/WoB2iPegCN6DIsXHJgI8mOjjvgCeBN6DIngPiuA9KHLwNGqAR0K8B0XwHhTBe1AE70ER7teCIlgOiuA9KML8e1CEeA+K4D0ogvegCN6DIngPivwHdd/n2ilLbVcAAAAASUVORK5CYII=" alt="" />

的确,当调用SaveChanges方法的时候,EF会根据EntityState这个枚举检测到实体的状态,然后执行相应的增/删/改操作。它们的具体意思分别为:

  • Detached:对象存在,但未由对象服务跟踪。在创建实体之后、但将其添加到对象上下文之前,该实体处于此状态;
  • Unchanged:自对象加载到上下文中后,或自上次调用 System.Data.Objects.ObjectContext.SaveChanges() 方法后,此对象尚未经过修改;
  • Added:对象已添加到对象上下文,但尚未调用 System.Data.Objects.ObjectContext.SaveChanges() 方法;
  • Deleted:使用 System.Data.Objects.ObjectContext.DeleteObject(System.Object) 方法从对象上下文中删除了对象;
  • Modified:对象已更改,但尚未调用 System.Data.Objects.ObjectContext.SaveChanges() 方法。

ok,已经知道了这个,利用EntityState这个枚举修改下之前单个实体的增删改方法:

增加:

        /// <summary>
/// 添加:DbSet.Add = > EntityState.Added
/// </summary>
private static void TestAddDestination()
{
var jacksonHole = new DbContexts.Model.Destination
{
Name = "Jackson Hole,Wyoming",
Description = "Get your skis on."
};
//AddDestinationByDbSetAdd(jacksonHole);
AddDestinationByEntityStateAdded(jacksonHole);
}
private static void AddDestinationByDbSetAdd(DbContexts.Model.Destination destination)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
context.Destinations.Add(destination);
context.SaveChanges();
}
}
private static void AddDestinationByEntityStateAdded(DbContexts.Model.Destination destination)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
Console.WriteLine(context.Entry(destination).State); //添加前:Detached
context.Entry(destination).State = EntityState.Added;
Console.WriteLine(context.Entry(destination).State); //添加后:Added
context.SaveChanges();
}
}
exec sp_executesql N'insert [baga].[Locations]([LocationName], [Country], [Description], [Photo], [TravelWarnings], [ClimateInfo])
values (@0, null, @1, null, null, null)
select [LocationID]
from [baga].[Locations]
where @@ROWCOUNT > 0 and [LocationID] = scope_identity()',N'@0 nvarchar(200),@1 nvarchar(500)',@0=N'Jackson Hole,Wyoming',@1=N'Get your skis on.'

监控到的sql也跟之前调用DbSet.Add方法添加实体的没什么区别。
注:上面的两个添加方法都是通过传递对象的形式,并没有在using语句块里初始化对象,这也更符合实际项目分层之间传递对象的情况。AddDestinationByEntityStateAdded方法里标记添加前对象的状态是Detached,即未被上下文追踪到,这个对象是别的方法传递进来的,当然不会被这个using语句块里的上下文追踪到。如果在上下文里取对象,状态就是Unchanged,即未改变的意思。感谢wlf在评论里的提醒

继续看一个标记实体为未改变实体:

        /// <summary>
/// 标记一个未改变的实体
/// </summary>
private static void TestAttachDestination()
{
DbContexts.Model.Destination canyon;
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
canyon = (from d in context.Destinations
where d.Name == "Grand Canyon"
select d).Single();
}
AttachDestination(canyon);
}
private static void AttachDestination(DbContexts.Model.Destination destination)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
Console.WriteLine(context.Entry(destination).State); //标记前:Detached
context.Destinations.Attach(destination); //修改使用Attach方法
//context.Entry(destination).State = EntityState.Unchanged; //跟Attach方法一样效果
Console.WriteLine(context.Entry(destination).State); //标记后:Unchanged
context.SaveChanges();
}
}

调用Attach方法变成了Unchanged状态。Unchanged状态会被SaveChanges方法忽略掉,不会有任何sql发送到数据库。

修改:

        /// <summary>
/// 修改:EntityState.Modified
/// </summary>
private static void TestUpdateDestination()
{
DbContexts.Model.Destination canyon;
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
canyon = (from d in context.Destinations
where d.Name == "Grand Canyon"
select d).Single();
}
canyon.TravelWarnings = "Don't Fall in!";
UpdateDestination(canyon);
}
private static void UpdateDestination(DbContexts.Model.Destination destination)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
Console.WriteLine(context.Entry(destination).State); //修改前:Detached
context.Entry(destination).State = EntityState.Modified;
Console.WriteLine(context.Entry(destination).State); //修改后:Modified
context.SaveChanges();
}
}
exec sp_executesql N'update [baga].[Locations]
set [LocationName] = @0, [Country] = @1, [Description] = @2, [Photo] = null, [TravelWarnings] = @3, [ClimateInfo] = null
where ([LocationID] = @4)
',N'@0 nvarchar(200),@1 nvarchar(max) ,@2 nvarchar(500),@3 nvarchar(max) ,@4 int',@0=N'Grand Canyon',@1=N'USA',@2=N'One huge canyon.',@3=N'Don''t Fall in!',@4=1

标记实体为Modified后调用SaveChanges方法后,EF知道要更新实体了,但是它并不知道具体更新的是哪一列,所以每一列都更新了。见上面的sql

删除:

        /// <summary>
/// 删除:DbSet.Remove = > EntityState.Deleted
/// </summary>
private static void TestDeleteDestination()
{
DbContexts.Model.Destination canyon;
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
canyon = (from d in context.Destinations
where d.Name == "Grand Canyon"
select d).Single();
}
//DeleteDestination(canyon);
DeleteDestinationByEntityStateDeletion(canyon);
}
private static void DeleteDestination(DbContexts.Model.Destination destination)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
context.Destinations.Attach(destination); //先告诉EF这个实体,状态变化:Detached -> Unchanged
context.Destinations.Remove(destination); //执行删除
context.SaveChanges();
}
}
private static void DeleteDestinationByEntityStateDeletion(DbContexts.Model.Destination destination)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
Console.WriteLine(context.Entry(destination).State); //删除前:Detached
context.Entry(destination).State = EntityState.Deleted;
Console.WriteLine(context.Entry(destination).State); //删除后:Deleted
context.SaveChanges();
}
}
exec sp_executesql N'delete [baga].[Locations]
where ([LocationID] = @0)',N'@0 int',@0=1

添加主从表数据(主外键关系实体间的递归):

        /// <summary>
/// 添加一组数据(主从表)
/// </summary>
private static void AddSimpleGraph()
{
var essex = new DbContexts.Model.Destination
{
Name = "Essex, Vermont",
Lodgings = new List<DbContexts.Model.Lodging>
{
new DbContexts.Model.Lodging{Name="Big Essex Hotel"},
new DbContexts.Model.Lodging{Name="Essex Junction B&B"}
}
};
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
context.Destinations.Add(essex);
Console.WriteLine("Essex Destination:{0}", context.Entry(essex).State);
foreach (var lodging in essex.Lodgings)
{
Console.WriteLine("{0}:{1}", lodging.Name, context.Entry(lodging).State);
}
context.SaveChanges();
}
}

使用EF自带的EntityState枚举和自定义枚举实现单个和多个实体的增删改查

上面的方法中只有主表Destination的数据调用了上下文的Add方法。调用上下文的Add方法的实体就会被上下文跟踪到,执行SaveChanges方法时如果实体的EntityState是Added,那么就会被插入到数据库。但是从表为何也被标记为Add了呢?因为EF根据主表查询从表的过程是递归(recursive)的。如图:

aaarticlea/png;base64,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" alt="" />

当然在调用方法时也得注意,否则实体的状态会被修改,调用SaveChanges方法的时候执行的sql也就不同了。看看这个图就明白了:

aaarticlea/png;base64,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" alt="" />

以上的方法都是在一个上下文对象里操作的,但是在真实的项目中用户在客户端对实体做完各种增删改操作后提交服务端这边,上下文对象肯定是不一样的。在客户端被标记为不同状态的实体(Added、Deteled、Modified等)到服务端的上下文就不认识这些实体了,那如何辨别实体的各种状态呢?继续往下看:

        /// <summary>
/// 复杂的添加和删除
/// </summary>
private static void TestSaveDestinationAndLodgings()
{
DbContexts.Model.Destination canyon;
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
canyon = (from d in context.Destinations.Include(d => d.Lodgings)
where d.Name == "Grand Canyon"
select d).Single();
}//查询【第一段sql】
canyon.TravelWarnings = "Carry enough water!";//修改【第二段sql】
canyon.Lodgings.Add(new DbContexts.Model.Lodging { Name = "Big Canyon Lodge" });//增加【第三段sql】 var firstLodging = canyon.Lodgings.ElementAt();
firstLodging.Name = "New Name Holiday Park";//修改【第四段sql】
var secondLodging = canyon.Lodgings.ElementAt();
var deletedLodgings = new List<DbContexts.Model.Lodging>();
canyon.Lodgings.Remove(secondLodging);//删除【第五段sql】
deletedLodgings.Add(secondLodging); SaveDestinationAndLodgings(canyon, deletedLodgings);
}

增加/删除/修改等操作都不在了using语句块里了,很明显就不能直接调用SaveChanges方法提交到数据库了。看下面方法如何还原实体状态并正确的提交数据库:

        /// <summary>
/// 设置每一个实体状态保证正确的提交修改
/// </summary>
/// <param name="destination">要添加的实体</param>
/// <param name="deteledLodgings">要删除的实体</param>
private static void SaveDestinationAndLodgings(DbContexts.Model.Destination destination, List<DbContexts.Model.Lodging> deteledLodgings)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
context.Destinations.Add(destination); if (destination.DestinationId > ) //避免了新添加的实体
context.Entry(destination).State = EntityState.Modified;
foreach (var lodging in destination.Lodgings)
{
if (lodging.LodgingId > )
context.Entry(lodging).State = EntityState.Modified;
}
foreach (var lodging in deteledLodgings)
{
context.Entry(lodging).State = EntityState.Deleted;
}
context.SaveChanges();
}
}

为何上面的方法都是用DestinationId > 0来当作条件呢?因为主键id是自增长的,大于0说明是已经存在的记录,那么自然是修改。新添加的DestinationId默认都是0。看看生成的sql吧:

【第一段sql】贪婪加载

SELECT
[Project1].[LocationID] AS [LocationID],
[Project1].[LocationName] AS [LocationName],
[Project1].[Country] AS [Country],
[Project1].[Description] AS [Description],
[Project1].[Photo] AS [Photo],
[Project1].[TravelWarnings] AS [TravelWarnings],
[Project1].[ClimateInfo] AS [ClimateInfo],
[Project1].[C1] AS [C1],
[Project1].[Discriminator] AS [Discriminator],
[Project1].[LodgingId] AS [LodgingId],
[Project1].[Name] AS [Name],
[Project1].[Owner] AS [Owner],
[Project1].[MilesFromNearestAirport] AS [MilesFromNearestAirport],
[Project1].[destination_id] AS [destination_id],
[Project1].[PrimaryContactId] AS [PrimaryContactId],
[Project1].[SecondaryContactId] AS [SecondaryContactId],
[Project1].[Entertainment] AS [Entertainment],
[Project1].[Activities] AS [Activities],
[Project1].[MaxPersonsPerRoom] AS [MaxPersonsPerRoom],
[Project1].[PrivateRoomsAvailable] AS [PrivateRoomsAvailable]
FROM ( SELECT
[Limit1].[LocationID] AS [LocationID],
[Limit1].[LocationName] AS [LocationName],
[Limit1].[Country] AS [Country],
[Limit1].[Description] AS [Description],
[Limit1].[Photo] AS [Photo],
[Limit1].[TravelWarnings] AS [TravelWarnings],
[Limit1].[ClimateInfo] AS [ClimateInfo],
[Extent2].[LodgingId] AS [LodgingId],
[Extent2].[Name] AS [Name],
[Extent2].[Owner] AS [Owner],
[Extent2].[MilesFromNearestAirport] AS [MilesFromNearestAirport],
[Extent2].[destination_id] AS [destination_id],
[Extent2].[PrimaryContactId] AS [PrimaryContactId],
[Extent2].[SecondaryContactId] AS [SecondaryContactId],
[Extent2].[Entertainment] AS [Entertainment],
[Extent2].[Activities] AS [Activities],
[Extent2].[MaxPersonsPerRoom] AS [MaxPersonsPerRoom],
[Extent2].[PrivateRoomsAvailable] AS [PrivateRoomsAvailable],
[Extent2].[Discriminator] AS [Discriminator],
CASE WHEN ([Extent2].[LodgingId] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]
FROM (SELECT TOP (2) [Extent1].[LocationID] AS [LocationID], [Extent1].[LocationName] AS [LocationName], [Extent1].[Country] AS [Country], [Extent1].[Description] AS [Description], [Extent1].[Photo] AS [Photo], [Extent1].[TravelWarnings] AS [TravelWarnings], [Extent1].[ClimateInfo] AS [ClimateInfo]
FROM [baga].[Locations] AS [Extent1]
WHERE N'Grand Canyon' = [Extent1].[LocationName] ) AS [Limit1]
LEFT OUTER JOIN [dbo].[Lodgings] AS [Extent2] ON ([Extent2].[Discriminator] IN ('Resort','Hostel','Lodging')) AND ([Limit1].[LocationID] = [Extent2].[destination_id])
) AS [Project1]
ORDER BY [Project1].[LocationID] ASC, [Project1].[C1] ASC

【第二段sql】

exec sp_executesql N'update [baga].[Locations]
set [LocationName] = @0, [Country] = @1, [Description] = @2, [Photo] = null, [TravelWarnings] = @3, [ClimateInfo] = null
where ([LocationID] = @4)
',N'@0 nvarchar(200),@1 nvarchar(max) ,@2 nvarchar(500),@3 nvarchar(max) ,@4 int',@0=N'Grand Canyon',@1=N'USA',@2=N'One huge canyon.',@3=N'Carry enough water!',@4=1

【第三段sql】

exec sp_executesql N'insert [dbo].[Lodgings]([Name], [Owner], [MilesFromNearestAirport], [destination_id], [PrimaryContactId], [SecondaryContactId], [Entertainment], [Activities], [MaxPersonsPerRoom], [PrivateRoomsAvailable], [Discriminator])
values (@0, null, @1, @2, null, null, null, null, null, null, @3)
select [LodgingId]
from [dbo].[Lodgings]
where @@ROWCOUNT > 0 and [LodgingId] = scope_identity()',N'@0 nvarchar(200),@1 decimal(18,2),@2 int,@3 nvarchar(128)',@0=N'Big Canyon Lodge',@1=0,@2=1,@3=N'Lodging'

【第四段sql】

exec sp_executesql N'update [dbo].[Lodgings]
set [Name] = @0, [Owner] = null, [MilesFromNearestAirport] = @1, [destination_id] = @2, [PrimaryContactId] = null, [SecondaryContactId] = null
where ([LodgingId] = @3)
',N'@0 nvarchar(200),@1 decimal(18,2),@2 int,@3 int',@0=N'New Name Holiday Park',@1=2.50,@2=1,@3=1

【第五段sql】

exec sp_executesql N'delete [dbo].[Lodgings]
where ([LodgingId] = @0)',N'@0 int',@0=2

跟踪下上面方法里的实体状态:

        /// <summary>
/// 设置每一个实体状态保证正确的提交修改
/// </summary>
/// <param name="destination">要添加的实体</param>
/// <param name="deteledLodgings">要删除的实体</param>
private static void SaveDestinationAndLodgings(DbContexts.Model.Destination destination, List<DbContexts.Model.Lodging> deteledLodgings)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
context.Destinations.Add(destination); if (destination.DestinationId > ) //避免了新添加的实体
context.Entry(destination).State = EntityState.Modified;
foreach (var lodging in destination.Lodgings)
{
if (lodging.LodgingId > )
context.Entry(lodging).State = EntityState.Modified;
}
foreach (var lodging in deteledLodgings)
{
context.Entry(lodging).State = EntityState.Deleted;
}
//看看每个实体的状态
Console.WriteLine("{0}:{1}", destination.Name, context.Entry(destination).State);
foreach (var lodging in destination.Lodgings)
{
Console.WriteLine("{0}:{1}", lodging.Name, context.Entry(lodging).State);
}
foreach (var lodging in deteledLodgings)
{
Console.WriteLine("{0}:{1}", lodging.Name, context.Entry(lodging).State);
}
context.SaveChanges();
}
}

aaarticlea/png;base64,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" alt="" />

的确如我们所需:主表数据是修改、从表数据一个修改一个添加一个删除。这样再调用上下文的SaveChanges方法的时候都能正确的提交数据库。看到这里可能疑惑了:这个Big Canyon Lodge的状态为何是Added?因为主表调用了Add方法,相关联的从表实体自动也被标记为Added状态了。上面有提到,EF的这个过程是递归的。

不过此方法弊端也很明显:如果要增/删/改的实体很多,那么还得挨个设置EntityState才可以。试着尝试着让实体实现自定义的IObjectWithState接口,IObjectWithState接口可以记录实体的状态,并且是独立于EF存在的。首先到Model类库上添加一个IObjectWithState接口:

namespace DbContexts.Model
{
public interface IObjectWithState
{
State State { get; set; }
}
public enum State
{
Added,
Unchanged,
        Modified,
Deleted
}
}

由于独立于EF而存在,所以从数据库取出来的对象得手动设置为Unchanged状态让EF跟踪到,否则取出来的实体都是Detached状态。最好的做法就是在数据库上下文类里监听ObjectMaterialized事件:

        public BreakAwayContext()
: base("name=BreakAwayContext")
{
((IObjectContextAdapter)this).ObjectContext
.ObjectMaterialized += (sender, args) =>
{
var entity = args.Entity as DbContexts.Model.IObjectWithState;
if (entity != null)
{
entity.State = DbContexts.Model.State.Unchanged;
}
};
}

注:需要引用命名空间:System.Data.Entity.Infrastructure
然后让Destination和Lodging类分别继承IObjectWithState接口:

public class Destination : IObjectWithState
public class Lodging : IObjectWithState

都设置好了添加一个方法试试:

        /// <summary>
/// 设置实体的状态为自定义的枚举值,然后统一跟踪
/// </summary>
public static void SaveDestinationGraph(DbContexts.Model.Destination destination)
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
context.Destinations.Add(destination);
foreach (var entry in context.ChangeTracker.Entries<DbContexts.Model.IObjectWithState>())
{
DbContexts.Model.IObjectWithState stateInfo = entry.Entity;
entry.State = ConvertState(stateInfo.State);
}
context.SaveChanges();
}
}
public static EntityState ConvertState(DbContexts.Model.State state)
{
switch (state)
{
case DbContexts.Model.State.Added:
return EntityState.Added;
                case DbContexts.Model.State.Modified:
                    return EntityState.Modified;
case DbContexts.Model.State.Deleted:
return EntityState.Deleted;
default:
return EntityState.Unchanged;
}
}

方法分析:首先是一个DbSet.Add方法标记主表实体的状态为Added,主表数据其实就是根数据(Root Destination)。正如本文前面演示的根数据被标记为Added状态了,那么相关联的从表数据也自动标记为了Added状态。然后使用ChangeTracker.Entries<TEntity>方法查出所有被上下文跟踪到的实体状态,并通过IObjectWithState接口把上下文中保留的实体状态都设置成了自定义的状态State。这样做有什么好处呢?继续向下看

        private static void TestSaveDestinationGraph()
{
DbContexts.Model.Destination canyon;
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
canyon = (from d in context.Destinations.Include(d => d.Lodgings)
where d.Name == "Grand Canyon"
select d).Single();
}
canyon.TravelWarnings = "Carry enough water!";
canyon.State = DbContexts.Model.State.Modified; //设置为自定义的枚举,跟EF的EntityState没关系 var firstLodging = canyon.Lodgings.First();
firstLodging.Name = "New Name Holiday Park";
firstLodging.State = DbContexts.Model.State.Modified; //设置为自定义的枚举 var secondLodging = canyon.Lodgings.Last();
secondLodging.State = DbContexts.Model.State.Deleted; //设置为自定义的枚举 canyon.Lodgings.Add(new DbContexts.Model.Lodging
{
Name = "Big Canyon Lodge",
State = DbContexts.Model.State.Added //设置为自定义的枚举
}); SaveDestinationGraph(canyon);
}

跟上面的TestSaveDestinationAndLodgings方法基本是类似的,生成的sql也一模一样,不过方法里并没修改每个实体的EntityState,而是设置成了自定义的枚举,好处显而易见:不需要再拿destination.DestinationId > 0 什么来判断哪个实体需要设置成什么状态了。扩展性很强,就算有100个实体被标记为了不同的增删改状态,也不需要挨个判断并设置了。

但是这个还不通用,只能针对demo里的操作,来一个更通用的:

        /// <summary>
/// 通用的转换实体状态方法
/// </summary>
/// <typeparam name="TEntity">要操作的实体</typeparam>
/// <param name="root">根实体</param>
private static void ApplyChanges<TEntity>(TEntity root) where TEntity : class, DbContexts.Model.IObjectWithState
{
using (var context = new DbContexts.DataAccess.BreakAwayContext())
{
context.Set<TEntity>().Add(root);
CheckForEntitiesWithoutStateInterface(context); //检查
foreach (var entry in context.ChangeTracker.Entries<DbContexts.Model.IObjectWithState>())
{
DbContexts.Model.IObjectWithState stateInfo = entry.Entity;
entry.State = ConvertState(stateInfo.State);
}
context.SaveChanges();
}
}
/// <summary>
/// 检查实体是否实现了IObjectWithState接口
/// </summary>
private static void CheckForEntitiesWithoutStateInterface(DbContexts.DataAccess.BreakAwayContext context)
{
var entitiesWithoutState = from e in context.ChangeTracker.Entries()
where !(e.Entity is DbContexts.Model.IObjectWithState)
select e;
if (entitiesWithoutState.Any())
throw new NotSupportedException("All entities must implement IObjectWithState");
}

注:需要加上检查实体是否实现了自定义的IObjectWithState接口,否则方法跑完每个实体都被标记为了EntityState.Added状态。

感谢阅读,希望我的分析能给你带来思考并有所进步。本文源码

EF DbContext 系列文章导航

  1. EF如何操作内存中的数据和加载外键数据:延迟加载、贪婪加载、显示加载  本章源码
  2. EF里单个实体的增查改删以及主从表关联数据的各种增删改查  本章源码
  3. 使用EF自带的EntityState枚举和自定义枚举实现单个和多个实体的增删改查  本章源码
  4. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态  本章源码
  5. EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证  本章源码
  6. 重写ValidateEntity虚方法实现可控的上下文验证和自定义验证  本章源码
上一篇:AsyncTask的注意事项


下一篇:opencv学习之路(33)、SIFT特征点提取(一)