как получить идентификатор последней добавленной строки при использовании структуры сущности с шаблоном единицы работы ??Я знаю, что после SaveChanges () автоматически увеличиваемый столбец автоматически обновляется, вы можете получить его как: -
Comment comment=new comment();
comment.username="sachin";
db.saveChanges();
var id= comment.commentId;
(простое решение), но как сделать то же самое при использовании единицы работы? И, пожалуйста, неСкажите, зачем вам единица работы? DbContext - это уже единица работы.Действие в контроллере
public ActionResult Savecomment(string comment)
{
var user = (from a in _registrationService.GetAllRegistrations() where a.Email == Convert.ToString(Session["Email"]) select a).FirstOrDefault();
var userid = Convert.ToInt32(user.UserId);
if (ModelState.IsValid)
{
Comment cmt = new Comment();
cmt.CommentId = cmt.CommentId;
cmt.DateTime = System.DateTime.Now;
cmt.PostId = Convert.ToInt32(TempData["pid"]);
cmt.UserId = userid;
cmt.Body = comment;
_commentService.CreateComment(cmt);
var id=cmt.CommentId;//I need this
var res = _commentService.GetCommentById(id);
return Json(res,JsonRequestBehavior.AllowGet);
}
return RedirectToAction("Index","Home");
}
Метод обслуживания
public Comment CreateComment(Comment CommentEntity)
{
using (var scope = new TransactionScope())
{
var Comment = new Comment
{
CommentId=CommentEntity.CommentId,
Body = CommentEntity.Body,
UserId = CommentEntity.UserId,
DateTime = CommentEntity.DateTime,
PostId=CommentEntity.PostId,
};
_unitOfWork.CommentRepository.Insert(Comment);
_unitOfWork.Save();
scope.Complete();
return Comment;
}
}
единица работы: -
public Repository<Comment> CommentRepository
{
get
{
if (this._CommentRepository == null)
this._CommentRepository = new Repository<Comment>(_context);
return _CommentRepository;
}
}
public void Save()
{
try
{
_context.SaveChanges();
}
catch (DbEntityValidationException e)
{
var outputLines = new List<string>();
foreach (var eve in e.EntityValidationErrors)
{
outputLines.Add(string.Format("{0}: Entity of type \"{1}\" in state \"{2}\" has the following validation errors:", DateTime.Now, eve.Entry.Entity.GetType().Name, eve.Entry.State));
foreach (var ve in eve.ValidationErrors)
{
outputLines.Add(string.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage));
}
}
//System.IO.File.AppendAllLines(@"C:\errors.txt", outputLines);
throw e;
}
}