问题描述
我要实现以下内容: https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro?view=aspnetcore-3.1#initialize-db-with-test-data
它可以工作,但是我需要验证是否已添加数据。
我在Internet上找到了以下解决方案:
public static EntityEntry<TEnt> AddIfNotExists<TEnt,TKey>(this DbSet<TEnt> dbSet,TEnt entity,Func<TEnt,TKey> predicate) where TEnt : class
{
var exists = dbSet.Any(c => predicate(entity).Equals(predicate(c)));
return exists
? null
: dbSet.Add(entity);
}
private static void AddRangeIfNotExists<TEnt,IEnumerable<TEnt> entities,TKey> predicate) where TEnt : class
{
var entitiesExist = from ent in dbSet
where entities.Any(add => predicate(ent).Equals(predicate(add)))
select ent;
dbSet.AddRange(entities.Except(entitiesExist));
}
它对于条件简单(一次检查)的情况很好用,但是我有一个复杂的主键,并且想确定是否已经添加了使用此键的记录:
public static void Initialize(DataContext context)
{
context.Database.EnsureCreated();
context.DeviceCharacteristicModelMappings.AddIfNotExists(new DeviceCharacteristicModelMapping
{
CharacteristicId = 2,DeviceModelId = 2
},p => new { p.CharacteristicId,DeviceModelId });
//....
context.SaveChanges();
}
,但根本无法编译。如何正确执行?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)