using System.Collections.Generic; using System.Threading.Tasks; using AutoMapper; using Datory; using GxPress.Common.AppOptions; using GxPress.Common.Tools; using GxPress.Repository.Interface.Navigation; using Microsoft.Extensions.Options; using System.Transactions; namespace GxPress.Repository.Implement.Navigation { public class MiddleLableNexusRepository : IMiddleLableNexusRepository { private readonly Repository _repository; private readonly IMapper _mapper; public MiddleLableNexusRepository(IOptionsMonitor dbOptionsAccessor, IMapper mapper) { var databaseType = StringUtils.ToEnum(dbOptionsAccessor.CurrentValue.DatabaseType, DatabaseType.MySql); var database = new Database(databaseType, dbOptionsAccessor.CurrentValue.ConnectionString); _repository = new Repository(database); _mapper = mapper; } public IDatabase Database => _repository.Database; public string TableName => _repository.TableName; public List TableColumns => _repository.TableColumns; /// /// 添加 /// /// /// /// public async Task InsertAsync(int middleLableId, List ids) { try { using (var transactionScope = new TransactionScope()) { foreach (var item in ids) { var model = new Entity.Navigations.MiddleLableNexus() { LableId = item, MiddleLableId = middleLableId }; await _repository.InsertAsync(model); } transactionScope.Complete(); } } catch { return false; } return true; } /// /// 查询 /// /// /// public async Task> GetAllTaskAsync(int middleLableId) { var query = Q.NewQuery(); query.Select(nameof(Entity.Navigations.MiddleLableNexus.LableId)); query.Where(nameof(Entity.Navigations.MiddleLableNexus.MiddleLableId), middleLableId); query.OrderByDesc(nameof(Entity.Navigations.MiddleLableNexus.Sort)); return await _repository.GetAllAsync(query); } public async Task DeleteByMiddleLableIdAsync(int middleLableId) { return await _repository.DeleteAsync(Q.Where(nameof(Entity.Navigations.MiddleLableNexus.MiddleLableId), middleLableId)) > 0; } public async Task UpdateAsync(int middleLableId, string lableId) { try { await DeleteByMiddleLableIdAsync(middleLableId); var stringId = StringUtils.StringCollectionToStringList(lableId); var intIds = new List(); foreach (var item in stringId) intIds.Add(int.Parse(item)); await InsertAsync(middleLableId, intIds); } catch { return false; } return true; } } }