public void DelandAddEmployeeRole(string strEmpNo,List<Model.EmployeeRole> listEmployeeRoles) {
using (var transaction = this.Database.BeginTransaction())
{
//删除旧数据
var query = EmployeeRoles.Where(s => s.EmpNo == strEmpNo);
EmployeeRoles.RemoveRange(query.ToList());
SaveChanges();
// 添加新记录
foreach (Model.EmployeeRole ModelEmployeeRole in listEmployeeRoles)
{
EmployeeRole employeeRole = new EmployeeRole()
{
EmpNo = ModelEmployeeRole.EmpNo,
Role = ModelEmployeeRole.Role,
Parameter = ModelEmployeeRole.Parameter
};
EmployeeRoles.Add(employeeRole);
}
SaveChanges();
transaction.Commit();
}
//using (TransactionScope transaction = new TransactionScope())
//{
// transaction.Complete();
//}
}
------------------添加数据遇到该表双主键,在实体类设置----------------------------
同时注意方法里设定过双主键后,不要再设定key了
[Table("RoleAndResourceGroup")]
public class RoleAndResourceGroup
{
public static void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<RoleAndResourceGroup>().HasKey(c=>new { c.RoleName,c.ResourceGroupName});
}
/// <summary>
/// RoleName
/// </summary>
public string RoleName { get; set; }
/// <summary>
/// ResourceGroupName
/// </summary>
public string ResourceGroupName { get; set; }
}
在context类里加个方法
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("Permission");//设置了数据库表的前缀名/模块名
RoleAndResourceGroup.OnModelCreating(modelBuilder);//主要是这句
}
public virtual DbSet<RoleAndResourceGroup> RoleAndResourceGroups { get; set; } //角色和资源组关系
然后就可以啦