From c007128dee4f8562754e62153e8ea996c670fd08 Mon Sep 17 00:00:00 2001 From: hhsung Date: Mon, 11 Aug 2025 13:06:10 +0900 Subject: [PATCH] =?UTF-8?q?EF=20framework=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SmartAquaViewer/DataAnalisys/AppDbContext.cs | 27 +++++++++++++++++++ .../DataAnalisys/AquarDataControl.cs | 5 +++- SmartAquaViewer/DataAnalisys/IWaterQuality.cs | 1 + .../DataAnalisys/WaterQualityVO.cs | 8 ++++++ SmartAquaViewer/SmartAquaViewer.csproj | 10 +++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 SmartAquaViewer/DataAnalisys/AppDbContext.cs diff --git a/SmartAquaViewer/DataAnalisys/AppDbContext.cs b/SmartAquaViewer/DataAnalisys/AppDbContext.cs new file mode 100644 index 0000000..6ad3331 --- /dev/null +++ b/SmartAquaViewer/DataAnalisys/AppDbContext.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore; +using System.Collections.Generic; +using static Microsoft.EntityFrameworkCore.DbLoggerCategory; + +namespace SmartAquaViewer.DataAnalisys +{ + public class AppDbContext : DbContext + { + + //dotnet ef migrations add InitialCreate + //dotnet ef database update + + //dotnet ef migrations add AddMultipleTables + //dotnet ef database update + + + + public DbSet WaterQualities { get; set; } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + // SQL Server 예시 (필요에 맞게 변경) + optionsBuilder.UseSqlServer( + "Server=localhost;Database=SmartAquaDB;Trusted_Connection=True;TrustServerCertificate=True;"); + } + } +} diff --git a/SmartAquaViewer/DataAnalisys/AquarDataControl.cs b/SmartAquaViewer/DataAnalisys/AquarDataControl.cs index 59ba69c..68de21b 100644 --- a/SmartAquaViewer/DataAnalisys/AquarDataControl.cs +++ b/SmartAquaViewer/DataAnalisys/AquarDataControl.cs @@ -9,13 +9,15 @@ namespace SmartAquaViewer.DataAnalisys { - internal class AquarDataControl { private AQUA_DATA_CONTROL_STATE state = AQUA_DATA_CONTROL_STATE.IDLE; private readonly IWaterQuality iwaterQuality; private CancellationTokenSource? cts; + AppDbContext db = new AppDbContext(); + + public AquarDataControl(IWaterQuality iwaterQuality) { this.iwaterQuality = iwaterQuality; @@ -65,6 +67,7 @@ namespace SmartAquaViewer.DataAnalisys vo.Timestamp = DateTime.Now; iwaterQuality.OnParsed(vo); + db.Add(vo); iwaterQuality.OnProgress(percent); } diff --git a/SmartAquaViewer/DataAnalisys/IWaterQuality.cs b/SmartAquaViewer/DataAnalisys/IWaterQuality.cs index a76621e..157ef0b 100644 --- a/SmartAquaViewer/DataAnalisys/IWaterQuality.cs +++ b/SmartAquaViewer/DataAnalisys/IWaterQuality.cs @@ -19,6 +19,7 @@ namespace SmartAquaViewer.DataAnalisys internal interface IWaterQuality { + void OnParsed(WaterQualityVO vo); void OnProgress(double percent); void OnError(string message); void OnCompleted(); diff --git a/SmartAquaViewer/DataAnalisys/WaterQualityVO.cs b/SmartAquaViewer/DataAnalisys/WaterQualityVO.cs index 1f88c8c..5af359b 100644 --- a/SmartAquaViewer/DataAnalisys/WaterQualityVO.cs +++ b/SmartAquaViewer/DataAnalisys/WaterQualityVO.cs @@ -9,9 +9,17 @@ namespace SmartAquaViewer.DataAnalisys using System; + using System.ComponentModel.DataAnnotations; + using System.ComponentModel.DataAnnotations.Schema; + [Table("WaterQuality")] public class WaterQualityVO { + + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] // 자동 증가 + public int Id { get; set; } // PK, Auto Increment + /// /// 저수조 번호 /// diff --git a/SmartAquaViewer/SmartAquaViewer.csproj b/SmartAquaViewer/SmartAquaViewer.csproj index e3e33e3..4f73c26 100644 --- a/SmartAquaViewer/SmartAquaViewer.csproj +++ b/SmartAquaViewer/SmartAquaViewer.csproj @@ -8,4 +8,14 @@ true + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + +