Я новичок в EntityFramework. Мой код, как показано ниже.EntityFramework всегда создает новую запись таблицы отношений
User.cs
public User
{
public long Id { get; set; }
public long UserRoleId { get; set; }
public string Name { get; set; }
public virtual UserRole UserRole { get; set; }
}
public class UserMap : EntityTypeConfiguration<User>
{
public UserMap()
{
ToTable("User");
HasKey(x => x.Id);
HasRequired(x => x.UserRole)
.WithMany(x => x.Users)
.HasForeignKey(x => x.UserRoleId);
}
}
UserRole.cs
public UserRole
{
public long Id { get; set; }
public string Name { get; set; }
public virtual ICollection<User> Users { get; set; }
public UserRole()
{
Users = new List<User>();
}
}
public class UserRoleMap : EntityTypeConfiguration<UserRole>
{
public UserRoleMap()
{
ToTable("UserRole");
HasKey(x => x.Id);
}
}
Install.cs
public Install
{
public static void Install()
{
RpUserRoles.Create(new UserRole() { Name = "System" });
RpUserRoles.Create(new UserRole() { Name = "Admin" });
var roleSystem = RpUserRoles.Table.Where(x => x.Name.Equals("System")).FirstOrDefault();
User userSystem = new User();
userSystem.Name = "UserSystem";
userSystem.UserRole = roleSystem;
RpUser.Create(userSystem);
var roleAdmin = RpUserRoles.Table.Where(x => x.Name.Equals("Admin")).FirstOrDefault();
User userAdmin = new User();
userAdmin.Name = "UserAdmin";
userAdmin.UserRoleId = roleAdmin.Id;
RpUser.Create(userAdmin);
}
}
результат, который я получаю в база данных неверна, когда я создаю нового пользователя в базе данных. EntityFramework дублирует записи в таблице отношений. Результат, как
User
| Id | UserRoleId | Name |
| 1 | 3 | UserSystem |
| 2 | 2 | UserAdmin |
UserRole
| Id | Name |
| 1 | System |
| 2 | Admin |
| 3 | System |
Ожидаемое UserRoleId для UserSystem пользователя должно быть , но я не знаю, почему EntityFramework будет дублировать новую запись в таблице UserRole. Поскольку UserAdmin установить UserRoleId, тогда все должно быть в порядке. Могу ли я узнать, настроен ли я неправильно? Благодарю.
да, обертка создать для каждого класса. Теперь я решил, вызвав контекст экземпляра. Огромное спасибо. –