Entity framework 将现有实体映射到实体框架中的现有表
是否可以像NHibernate那样将现有表映射到实体框架中的现有实体 比如说。我有实体作为Entity framework 将现有实体映射到实体框架中的现有表,entity-framework,c#-4.0,Entity Framework,C# 4.0,是否可以像NHibernate那样将现有表映射到实体框架中的现有实体 比如说。我有实体作为 public class User { public Int64 userId { set; get; } public String Username { set; get; } public Int64 RoleId { set; get; } } public class Role { public Int64 roleId { set; get; } p
public class User
{
public Int64 userId { set; get; }
public String Username { set; get; }
public Int64 RoleId { set; get; }
}
public class Role
{
public Int64 roleId { set; get; }
public String roleName { set; get; }
public IList<User> listUser { set; get; }
}
现在,我想使用XML文件映射这两个文件。是否可以将现有表与现有实体映射。您有几个选项: 1通过数据库第一个edmx文件管理映射请参见
2从数据库优先的方法开始,然后转向使用fluent api的代码优先的方法参见EF中通常的映射方式是数据注释属性或fluent映射实际上使用NHibernate fluent映射也更好,因为它提供了编译时检查。因此,这里是您的类的流畅映射:
public class UserMapping : EntityTypeConfiguration<User>
{
public UserMapping()
{
ToTable("Users"); // Not necessary, EF will use this mapping by default
HasKey(u => u.userId);
Property(u => u.userId).HasColumnName("id");
Property(u => u.Username).HasColumnName("name");
Property(u => u.RoleId).HasColumnName("roleId");
}
}
public class RoleMapping : EntityTypeConfiguration<Role>
{
public RoleMapping()
{
ToTable("Roles"); // Not necessary, EF will use this mapping by default
HasKey(r => r.roleId);
Property(r => r.roleId).HasColumnName("id");
Property(r => r.roleName).HasColumnName("name");
HasMany(r => r.listUser)
.WithRequired()
.HasForeignKey(u => u.RoleId);
}
}
我建议你阅读MSDN的文章
旁注-另一篇文章是,特别是它的大写样式部分。为什么要使用XML文件?EF中常用的映射方式是fluent映射的数据注释属性
public class UserMapping : EntityTypeConfiguration<User>
{
public UserMapping()
{
ToTable("Users"); // Not necessary, EF will use this mapping by default
HasKey(u => u.userId);
Property(u => u.userId).HasColumnName("id");
Property(u => u.Username).HasColumnName("name");
Property(u => u.RoleId).HasColumnName("roleId");
}
}
public class RoleMapping : EntityTypeConfiguration<Role>
{
public RoleMapping()
{
ToTable("Roles"); // Not necessary, EF will use this mapping by default
HasKey(r => r.roleId);
Property(r => r.roleId).HasColumnName("id");
Property(r => r.roleName).HasColumnName("name");
HasMany(r => r.listUser)
.WithRequired()
.HasForeignKey(u => u.RoleId);
}
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserMapping());
modelBuilder.Configurations.Add(new RoleMapping());
base.OnModelCreating(modelBuilder);
}