本文我们来学习一下在Entity Framework中使用Context删除多对多关系的实体是如何来实现的。我们将以一个具体的控制台小实例来了解和学习整个实现Entity Framework 多对多关系的实体删除的操纵过程。
你将学习到
怎样创建一个引用Entity Framework的项目;
怎样配置Entity Framework的数据库连接;
怎样去失Entity Framework Code First 生成的表名的复数;
怎样通过EntityTypeConfiguartion<T>配置实体的Fluent API ;
怎样配置Entity Framework的实体多对多的关系映射;
Entity Framework数据初始化;
怎样使用承打点工具控制台来生成和更新数据库;
怎么删除Entity Framework中的多对多关系的数据。
本示例开发环境
操纵系统:Windows 10
开发工具及版本:Visual Studio 2015 Update 1
.NET Framework版本:.NET Framework 4.6
措施输出方法:控制台应用措施
第一步、创建项目并引用措施包 1.1 创建项目首先,我们创建一个控制台应用措施,取名为:EFRemoveManyToManyDemo,如下图:
1.2 引用措施包
接着打开措施承打点工具,安置必需的EntityFramework引用包,如下:
第二步、创建实体类并配置数据库连接 2.1 创建实体类
安置好Entity Framework包之后 ,我们先创建本示例需要的两个实体对应的类:User和Role(都放在Model的文件夹下),如下:
User.cs
using System; using System.Collections.Generic; namespace EFRemoveManyToManyDemo.Model { public class User { public User() { Roles = new HashSet<Role>(); } public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime? CreatedOn { get; set; } public virtual ICollection<Role> Roles { get; set; } } }Role.cs
using System.Collections.Generic; namespace EFRemoveManyToManyDemo.Model { public class Role { public Role() { this.Users = new HashSet<User>(); } public int Id { get; set; } public string Name { get; set; } public virtual ICollection<User> Users { get; set; } } } 2.2 配置Fluent API为了配置Fluent API,新建一个Mapping文件夹,再分袂创建User的配置文件UserConfigurationMapping和Role的配置文件RoleConfigurationMapping,如下:
UserConfiguration.cs
using EFRemoveManyToManyDemo.Model; using System.Data.Entity.ModelConfiguration; namespace EFRemoveManyToManyDemo.Mapping { public class UserConfigurationMapping : EntityTypeConfiguration<User> { public UserConfigurationMapping() { Property(x => x.FirstName).HasMaxLength(50).IsRequired(); Property(x => x.LastName).HasMaxLength(50).IsRequired(); } } }RoleConfigurationMapping.cs
using EFRemoveManyToManyDemo.Model; using System.Data.Entity.ModelConfiguration; namespace EFRemoveManyToManyDemo.Mapping { public class RoleConfigurationMapping : EntityTypeConfiguration<Role> { public RoleConfigurationMapping() { HasKey(x => x.Id); Property(x => x.Name).HasMaxLength(50).IsRequired(); HasMany(x => x.Users) .WithMany(x => x.Roles) .Map(m => { m.MapLeftKey("RoleId"); m.MapRightKey("UserId"); m.ToTable("LNK_User_Role"); }); } } } 2.3 创建Context类