我在 mvc 中的实体框架有问题 Asp.net。每当将实体列表添加到数据库时,我都想获取 Id 值。我该怎么做?
我使用此代码将实体列表添加到数据库:
public IEnumerable<TEntity> AddThisRange<TEntity>(IEnumerable<TEntity> entities) where TEntity : class
{
return ((DbSet<TEntity>)this.Set<TEntity>()).AddRange(entities);
}
var Tags = _uow.AddThisRange(newTags.Select(tagName => new Tag
{
//set properties
}));
_uow.SaveAllChanges();
foreach (var tag in Tags)
{
var id = tag.Id;// id always is 0
}
我使用数据库生成的 ID(如 MS SQL 中的 IDENTITY)
我认为"问题"是id是在数据库中生成的。您必须先保存标签,然后再次获取它们,然后才能在代码中使用它们的 id。
像这样:
public IEnumerable<TEntity> AddThisRange<TEntity>(IEnumerable<TEntity> entities) where TEntity : class
{
return ((DbSet<TEntity>)this.Set<TEntity>()).AddRange(entities);
}
var Tags = _uow.AddThisRange(newTags.Select(tagName => new Tag
{
//set properties
}));
_uow.SaveAllChanges();
//Pseudocode:
var savedTags = _uow.GetSavedTags(newTags);
foreach (var tag in savedTags)
{
var id = tag.Id;// id will not be 0 anymore
}
试试这个,
public TEntity Create<TEntity>()
{
return ((DbSet<TEntity>)this.Set<TEntity>()).Create();
}
var listOfEntities =new List<Tag>();
foreach (var d in newTags)
{
var entity = _uow.Create<Tag>();
//set properties
//entity.prop=""
listOfEntities.Add(entity);
}
_uow.AddThisRange(listOfEntities);
_uow.SaveAllChanges();
然后,您可以看到列表中设置了 Id 值
foreach (var tag in listOfEntities)
{
var id = tag.Id;
}
你可以阅读这篇文章 创建方法是什么 https://msdn.microsoft.com/en-us/library/gg696136(v=vs.113).aspx