powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / как получить текущего пользователя?
2 сообщений из 2, страница 1 из 1
как получить текущего пользователя?
    #39091761
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Прошу помощи у сообщества.
Есть Веб-проект. Вся работа с БД вынесена в библиотеку. Используется EF5 MVC5. Вот и сам вопрос - как получить пользователя?

Сейчас пробую так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
private ApplicationUser _applicationUser;

        protected BaseModel()
        {
            if (_applicationUser == null)
            {
                var context = new HttpContextFactory().Create();
                var userId = context.User.Identity.GetUserId();
                var userStore =
                    (IUserStore<ApplicationUser>)
                        DependencyResolver.Current.GetService(typeof(IUserStore<ApplicationUser>));
                _applicationUser = userStore.FindByIdAsync(userId).Result;
            }
        }

        [Display(ResourceType = typeof(Resources), Name = "AuthorName")]
        public ApplicationUser Author
        {
            get
            {
                return _applicationUser;
            }
            set { _applicationUser = value; }
        }



Интерфейс и класс:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public interface IHttpContextFactory
    {
        HttpContextBase Create();
    }

public class HttpContextFactory : IHttpContextFactory
    {
        public HttpContextBase Create()
        {
            return new HttpContextWrapper(HttpContext.Current);
        }
    }



Зависимость:
Код: c#
1.
2.
3.
4.
kernel.Bind<IUserStore<ApplicationUser>>()
                .To<CustomUserStore<ApplicationUser>>();
kernel.Bind<IHttpContextFactory>()
                .To<HttpContextFactory>();



но в итоге - Исключение:[System.InvalidOperationException: На объект сущности не могут ссылаться несколько экземпляров интерфейса IEntityChangeTracker.

знаю что нагородил... но никак не могу сообразить как инжектировать экземпляр класса текущего ApplicationUser

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
public class ApplicationUser : IdentityUser<string, CustomUserLogin, CustomUserRole, CustomUserClaim>, IUser
    {
       
        public string FirstName { get; set; }

        public ApplicationUser()
        {

            Init();
        }

        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            return userIdentity;
        }

        private void Init()
        {
            Id = Guid.NewGuid().ToString();
        }

        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, string> manager)
        {
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            return userIdentity;
        }
    }



контекст:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class ApplicationDbContext :
        IdentityDbContext<ApplicationUser, CustomRole, string, CustomUserLogin, CustomUserRole, CustomUserClaim>
    {
        public ApplicationDbContext()
            : this("EFDbContext")
        {

        }

        public ApplicationDbContext(string connectionString)
            : base(connectionString)
        {
            // включает ленивую загрузку
            Configuration.LazyLoadingEnabled = true;
        }
}



помогите кто чем может...
...
Рейтинг: 0 / 0
как получить текущего пользователя?
    #39091762
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первый фрагмент кода это
Код: c#
1.
2.
3.
4.
5.
6.
public abstract class BaseModel
{

//все что написано и несколько автосвойст

}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / как получить текущего пользователя?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]