我正在使用guids作为我的实体的PK。 由于EF不支持newid()SQL语句,我在创建方法中强制使用 Guid.NewGuid()。
这是我的问题: 我有一个具有聚集唯一约束的表(2个字符串,而不是PK)。
我在相同的 EF上下文中运行了一些代码,这些代码执行操作并添加/链接实体等。
是否可以在我的上下文中搜索处于“已添加”状态的实体?;也就是说哪个在我的上下文中,但尚未插入我的数据库中。
为了避免引发SQL唯一约束,我必须知道实体是否已在上下文中“排队”,并重新使用它而不是创建新的Guid(...和另一个实体! :()
答案 0 :(得分:1)
这篇文章救了我:):
var stateEntries = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EtityState.Modified | EntityState.Unchanged);
var roleEntityEntries = stateEntries.Select(s => s.Entity).OfType<Role>();
roleEntity = roleEntityEntries.FirstOrDefault(r => r.RoleName.Trim().ToLower() == roleName.Trim().ToLower());
if (roleEntity == null)
{
return new Role { RoleName = roleName };
}