}).PrimaryKey( t = t.Id);CreateTable( "dbo.LNK_User_Role"

时间:2021-08-28 08:09:16

本文我们来学习一下在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,如下图:

}).PrimaryKey( t = t.Id);CreateTable( "dbo.LNK_User_Role"

1.2 引用措施包

接着打开措施承打点工具,安置必需的EntityFramework引用包,如下:

}).PrimaryKey( t = t.Id);CreateTable( "dbo.LNK_User_Role"

第二步、创建实体类并配置数据库连接 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类