Update many to many

This commit is contained in:
sunkaixuan
2024-03-19 16:02:55 +08:00
parent b0bfe04e5c
commit f148067a87
2 changed files with 16 additions and 0 deletions

View File

@@ -213,11 +213,19 @@ namespace SqlSugar
var bEntity = navObjectNameColumnInfo.PropertyInfo.PropertyType.GetGenericArguments()[0];
var bEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(bEntity);
var bPkColumn = bEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
if (bPkColumn == null && navObjectNameColumnInfo.Navigat.AClassId.HasValue())
{
bPkColumn= bEntityInfo.Columns.FirstOrDefault(it => it.PropertyName == navObjectNameColumnInfo.Navigat.AClassId);
}
Check.ExceptionEasy(bPkColumn==null, $"{bEntityInfo.EntityName} need primary key", $"{bEntityInfo.EntityName} 实体需要配置主键");
var bDb = this.Context;
bDb = GetCrossDatabase(bDb,bEntity);
bDb.InitMappingInfo(bEntity);
var listItemPkColumn = listItemEntity.Columns.Where(it => it.IsPrimarykey).FirstOrDefault();
if (listItemPkColumn == null && navObjectNameColumnInfo.Navigat.BClassId.HasValue())
{
listItemPkColumn = listItemEntity.Columns.FirstOrDefault(it => it.PropertyName == navObjectNameColumnInfo.Navigat.BClassId);
}
Check.ExceptionEasy(listItemPkColumn == null, $"{listItemEntity.EntityName} need primary key", $"{listItemEntity.EntityName} 实体需要配置主键");
var ids = list.Select(it => it.GetType().GetProperty(listItemPkColumn.PropertyName).GetValue(it)).Select(it => it == null ? "null" : it).Distinct().ToList();
var mappingEntity = this.Context.EntityMaintenance.GetEntityInfo(navObjectNameColumnInfo.Navigat.MappingType);

View File

@@ -211,6 +211,14 @@ namespace SqlSugar
var bPk = this.ProPertyEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true)?.DbColumnName;
var aPk = this.EntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey == true)?.DbColumnName;
if (bPk == null)
{
bPk= this.ProPertyEntity.Columns.FirstOrDefault(it => it.PropertyName == Navigat.BClassId)?.DbColumnName;
}
if (aPk == null)
{
aPk = this.ProPertyEntity.Columns.FirstOrDefault(it => it.PropertyName == Navigat.AClassId)?.DbColumnName;
}
Check.ExceptionEasy(aPk.IsNullOrEmpty(), $"{this.EntityInfo.EntityName}need primary key", $"{this.EntityInfo.EntityName}需要主键");
Check.ExceptionEasy(bPk.IsNullOrEmpty(), $"{this.ProPertyEntity.EntityName}need primary key", $"{this.ProPertyEntity.EntityName}需要主键");
MapperSql mapper = new MapperSql();