我是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 |
爲UserSystem用戶預期UserRoleId應,但我不知道爲什麼會的EntityFramework中的重複的UserRole表的新紀錄。由於UserAdmin設置UserRoleId然後應該沒問題。我可以知道我配置錯了嗎?謝謝。
是的,包裝是建立一個爲每個類。現在我通過調用實例上下文來解決問題。非常感謝。 – 2014-11-06 21:23:38