【发布时间】:2014-11-06 20:51:40
【问题描述】:
我是 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 |
UserSystem 用户的预期 UserRoleId 应该是 1 但我不知道为什么 EntityFramework 会在 UserRole 表中复制一条新记录。作为 UserAdmin 设置 UserRoleId 然后应该没问题。我可以知道我配置错了吗?谢谢。
【问题讨论】:
标签: c# entity-framework