我在Asp.net mvc中遇到了Entity Framework的问题。每当我向数据库添加实体列表时,我想获取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
}
我使用DB生成的ID(如MS SQL中的IDENTITY)
答案 0 :(得分:2)
我认为“问题”是在数据库中生成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
}
答案 1 :(得分:0)
试试这个,
Sub dural2()
Dim Cnt&, RowCnt&
RowCnt = Cells.Find("*", , , , , xlPrevious).Row
For Cnt = RowCnt To 1 Step -1
If Evaluate("=COUNTIF(B" & Cnt & ":G" & Cnt & ",0)") = 6 Then
Rows(Cnt).Delete
End If
Next Cnt
End Sub
然后您可以在列表中看到Id值已设置
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();
您可以阅读本文创建方法的内容https://msdn.microsoft.com/en-us/library/gg696136(v=vs.113).aspx