【发布时间】:2016-02-21 18:05:57
【问题描述】:
我想在我的上下文部分类中添加一些“自动化”功能,例如CreatedBy 和ModifiedBy。
我有 2 个项目: DataAccess 和 MVC(启动项目)。
我无法在文件夹 Context 中的上下文部分类中获取程序集引用(请参见照片),有什么方法可以做到这一点?我已经安装了所有必要的 nu-get 组件
所以,当我尝试拨打User.Identity.GetUserId(); 时,我有红色下划线
正如您在图片中看到的,我什至在该项目 (DataAccess) 中提取了类 IdentityModels.cs,但没有运气。
我的上下文类看起来像:
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() 能行吗?
标签: asp.net-mvc entity-framework asp.net-identity-2