Спасибо, такой код работает, но @Ruard van Elburg упомянул довольно интересную идею - не использовать ApplicationUser в других сущностях. Хотя я до сих пор не понимаю, как это сделать.
ользую идентичность, которая имеет свой собственный контекст.
public class ApplicationUser : IdentityUser {
// some custom fields
}
public class IdentityContext : IdentityDbContext<ApplicationUser> {
//...
}
Также у меня есть некоторые другие объекты, подобные этому
public class Comment{
public int Id {get;set;}
public string Message{get;set;}
public DateTime Time{get;set;}
}
которые используются моим другим контекстом
public class MyContext :DbContext {
public DbSet<Comment> Comments { get; set; }
//... other DbSets
}
Вопрос. Я хочу, чтобы моя сущность Comment имела свойство author, поэтому у меня будет что-то вроде
public class Comment{
public int Id {get;set;}
public string Message{get;set;}
public DateTime Time{get;set;}
public virtual ApplicationUser Author {get;set;}
}
но ApplicationUser находится в другом контексте, хотя и в одной и той же БД. Бьюсь об заклад, это невозможно.
Как правильно это реализовать? Должен ли я переместить DbSets из MyContext в IdentityContext, чтобы я мог свободно использовать такой код
public virtual ApplicationUser Author {get;set;}
или я должен оставить это в другом контексте, но добавить что-то вроде
public string AuthorId {get;set}
и сделать некоторые обходные пути, чтобы получить информацию об авторе из другого контекста каждый раз, когда мне это нужно? Или что-то другое?
Спасибо
редактировать
Хорошо, я закончил с чем-то вроде этого:
public class ApplicationUser : IdentityUser {
public virtual UserProfile UserProfile { get; set; }
}
public class UserProfile {
[Key, ForeignKey("ApplicationUser")]
public string Id { get; set; }
//... custom fields
public virtual ApplicationUser ApplicationUser { get; set; }
}
public class IdentityContext : IdentityDbContext<ApplicationUser> {
//...
public DbSet<UserProfile> UserProfiles { get; set; }
}
Но как мне реализовать ссылку на комментарий автора? Как это? Так что это не будет связано через отношения EF, и я просто сам заполнил UserProfileId где-нибудь в коде?
public class Comment{
public int Id {get;set;}
public string UserProfileId{get;set;}
}
Это правильный способ сделать?