如何添加实体列表和如何获取 ID



我在 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

相关内容

  • 没有找到相关文章

最新更新