Я хочу, чтобы в моем контексте частичный класс добавлял некоторые «автоматические» функции, такие как CreatedBy
и ModifiedBy
.Identity 2.0 Пользователь с частичным DbContext MVC 5
У меня есть 2 проекта: DATAACCESS и MVC (StartUp проект).
Я не могу получить ссылку на сборку в моем контексте Частичный класс в папке Контекст (см. Фото), есть ли способ сделать это? Я установил все необходимые ню получить компоненты
Итак, у меня есть красное подчеркивание, когда я пытаюсь вызвать User.Identity.GetUserId();
Как вы можете видеть на изображении, я даже вытащил из класса IdentityModels.cs в этом проекте (DATAACCESS), но без везения.
мой контекст класса выглядит следующим образом:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Core.Objects;
using System.Data.Entity.Infrastructure;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
using Microsoft.AspNet.Identity;
using Microsoft.VisualBasic.ApplicationServices;
using Owin;
namespace DataAccess
{
public partial class SalesManagementEntities
{
private bool doSaveChangesOverride = true;
public bool DoSaveChangesOverride
{
set { doSaveChangesOverride = value; }
get { return doSaveChangesOverride; }
}
public override int SaveChanges()
{
try
{
if (DoSaveChangesOverride)
SaveChangesOverride();
return base.SaveChanges();
}
catch (Exception ex)
{
throw ex;
}
}
public override Task<int> SaveChangesAsync()
{
if (DoSaveChangesOverride)
SaveChangesOverride();
return base.SaveChangesAsync();
}
private void SaveChangesOverride()
{
ObjectContext context = ((IObjectContextAdapter)this).ObjectContext;
//Find all Entities that are Added/Modified that inherit from my EntityBase
IEnumerable<ObjectStateEntry> objectStateEntries =
from e in context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
where
e.IsRelationship == false &&
e.Entity is IEntityBase
select e;
var currentTime = DateTime.Now;
string userId = User.Identity.GetUserId();
foreach (var entry in objectStateEntries)
{
var entityBase = entry.Entity as IEntityBase;
if (entry.State == EntityState.Added)
{
entityBase.SetCreatedDateTime(currentTime);
entityBase.SetCreatedBy(userId);
}
entityBase.SetModifiedDateTime(currentTime);
entityBase.SetModifiedBy(userId);
}
}
}
}
Это работает, если вы попробуете HttpContext.Current.User.Identity.GetUserId()? –