Классы всех объектов данных определены в проекте Model , чтобы его можно было использовать клиентскими приложениями. Только пользователь (
Код: Выделить всё
ApplicationUser
У меня мало Классы организации, которые включают поле CreateByuserid и хотели бы иметь собственность навигационного иностранного ключа. Проблема заключается в том, что я не могу использовать класс ApplicationUser в определении объекта, так как он не известен в модели Project.
Я создал интерфейс iappuser с соответствующими полями и добавленным также в качестве приложения базовый класс. Создано: < /p>
system.invalidoperationException: «Свойство» CreateByuser 'не может быть настроено в качестве навигационного свойства. Свойство должно быть действительным типом объекта, а свойство должно иметь неапстрортный Getter и Setter. Для свойств сбора тип должен реализовать iCollection , где t является допустимым типом объекта. '< /P>
< /blockquote>
код: < /p>
Код: Выделить всё
public class EntityA
{
[Key]
public int EntityId { get; set; } // Primary key, Identity
public DateTime? CreateDate { get; set; } // Nullable DateTime
[StringLength(128)]
[ForeignKey("CreateByUser")]
public string CreateByUserId { get; set; } // Nullable nvarchar(128)
public virtual IAppUser CreateByUser { get; set; }
...
}
public class ApplicationUser : IdentityUser, IAppUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? CustomerId { get; set; }
}
Код: Выделить всё
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// AspNetUsers -> User
modelBuilder.Entity()
.ToTable("User");
//.HasMany(p => p.Roles)
//.WithRequired()
//.HasForeignKey(f => f.UserId);
// AspNetRoles -> Role
modelBuilder.Entity()
.ToTable("Role");
// AspNetUserRoles -> UserRole
modelBuilder.Entity()
.ToTable("UserRole");
// AspNetUserClaims -> UserClaim
modelBuilder.Entity()
.ToTable("UserClaim");
// AspNetUserLogins -> UserLogin
modelBuilder.Entity()
.ToTable("UserLogin");
// Configure the relationship between Grant and ApplicationUser
modelBuilder.Entity()
.HasOptional(g => (AppUser)g.CreateByUser)
.WithMany() // No inverse navigation property on ApplicationUser
.HasForeignKey(g => g.CreateByUserId) // Foreign key: CreateByUserId
.WillCascadeOnDelete(false);
}
}
< /code>
Кто -нибудь делал что -то подобное раньше? Есть идеи, как заставить это работать? Также считается вручную реализовать свойство CreateByuser
Подробнее здесь: https://stackoverflow.com/questions/794 ... oreign-key