diff --git a/Data/Repositories/DevicesRepositories.cs b/Data/Repositories/DevicesRepositories.cs index 17a3f05..a095ed3 100644 --- a/Data/Repositories/DevicesRepositories.cs +++ b/Data/Repositories/DevicesRepositories.cs @@ -2,6 +2,7 @@ using PMSWPF.Data.Entities; using PMSWPF.Enums; using PMSWPF.Excptions; using PMSWPF.Extensions; +using PMSWPF.Helper; using PMSWPF.Models; namespace PMSWPF.Data.Repositories; @@ -33,9 +34,18 @@ public class DevicesRepositories:BaseRepositories } - public async Task> GetAll() + public async Task> GetAll() { - return await _db.Queryable().Includes(d=>d.VariableTables).ToListAsync(); + var dlist= await _db.Queryable().Includes(d=>d.VariableTables).ToListAsync(); + List devices=new List(); + foreach (DbDevice dbDevice in dlist) + { + Device device = dbDevice.NewTo(); + device.VariableTables=CovertHelper.ConvertList(dbDevice.VariableTables); + devices.Add(device); + } + + return devices; } public async Task GetById(int id) { diff --git a/Helper/CovertHelper.cs b/Helper/CovertHelper.cs new file mode 100644 index 0000000..e919700 --- /dev/null +++ b/Helper/CovertHelper.cs @@ -0,0 +1,33 @@ +using System.Reflection; + +namespace PMSWPF.Helper; + +public class CovertHelper +{ + public static List ConvertList(List sourceList) + { + List targetList = new List(); + Type sourceType = typeof(TSource); + Type targetType = typeof(TTarget); + + // 获取源类型和目标类型的公共属性 + PropertyInfo[] sourceProperties = sourceType.GetProperties(BindingFlags.Public | BindingFlags.Instance); + PropertyInfo[] targetProperties = targetType.GetProperties(BindingFlags.Public | BindingFlags.Instance); + + foreach (TSource sourceObject in sourceList) + { + TTarget targetObject = Activator.CreateInstance(); + foreach (PropertyInfo targetProperty in targetProperties) + { + PropertyInfo sourceProperty = sourceProperties.FirstOrDefault(p => p.Name == targetProperty.Name && p.PropertyType == targetProperty.PropertyType); + if (sourceProperty!= null) + { + object value = sourceProperty.GetValue(sourceObject); + targetProperty.SetValue(targetObject, value); + } + } + targetList.Add(targetObject); + } + return targetList; + } +} \ No newline at end of file diff --git a/ViewModels/DevicesViewModel.cs b/ViewModels/DevicesViewModel.cs index 8f72aad..e8015ee 100644 --- a/ViewModels/DevicesViewModel.cs +++ b/ViewModels/DevicesViewModel.cs @@ -27,7 +27,7 @@ public partial class DevicesViewModel : ViewModelBase private readonly DevicesRepositories _devicesRepositories; private readonly ILogger _logger; [ObservableProperty] - private ObservableCollection _devices = new(); + private ObservableCollection _devices ; public DevicesViewModel(IDeviceDialogService deviceDialogService, DevicesRepositories devicesRepositories,ILogger logger ) @@ -40,25 +40,8 @@ public partial class DevicesViewModel : ViewModelBase public async Task OnLoadedAsync() { var ds = await _devicesRepositories.GetAll(); - _devices.Clear(); - foreach (var dbDevice in ds) - { - Device device = new Device(); - dbDevice.CopyTo(device); - foreach (var dbVariableTable in dbDevice.VariableTables) - { - - if (device.VariableTables == null) - { - device.VariableTables=new List(); - } - - var table = dbVariableTable.NewTo(); - device.VariableTables.Add(table); - } - - _devices.Add(device); - } + Devices=new ObservableCollection(ds); + } [RelayCommand] diff --git a/Views/MainView.xaml b/Views/MainView.xaml index f71fea6..a27cf8d 100644 --- a/Views/MainView.xaml +++ b/Views/MainView.xaml @@ -11,8 +11,9 @@ xmlns:vm="clr-namespace:PMSWPF.ViewModels" xmlns:hc="https://handyorg.github.io/handycontrol" Title="设备管理系统" - Width="800" - Height="600" + Width="1080" + Height="800" + ui:WindowHelper.UseModernWindowStyle="True" ui:WindowHelper.SystemBackdropType="Mica" d:DataContext="{d:DesignInstance vm:MainViewModel}"