圖控軟體﹣監控系統軟體開發 |
今年,網智數位軟體研發中心跟台灣綠能產業的先行者同時也是儲冰系統、冰球式儲冰(ice ball thermal storage)設備、潔淨室相關設備的大廠 奇立事業股份有限公司,正式合作開發一系列的圖控軟體、監控系統軟體專案,團隊將投入多年的軟體開發經驗以及硬體設備整合,也特別感謝客戶給我們機會讓我們投入專業知識。
網智數位主要提供套裝及客製化的軟體系統解決方案,專為客戶量身訂做客製化的軟體,達成客製化、智慧化及網路化的管理功能。
網智數位主要提供套裝及客製化的軟體系統解決方案,針對室內設計師、木工、裝潢業產業,量身訂做客製化的軟體,達成客製化、智慧化及網路化的商用軟體。
網智數位主要提供套裝及客製化的軟體系統解決方案,專為客戶量身訂做客製化的軟體,達成客製化、智慧化及網路化的管理功能。
根據客戶實際狀況,結合雲端與載具進行客製化物聯網IOT導入與軟體開發
我們的雲端VPS虛擬主機是採用雲端(虛擬化)技術所開發之全新雲端伺服器服務,可以選擇多種作業系統(Windows、Linux等),客戶可載入自訂的應用環境,執行自己所要提供的網路服務,我們的雲端服務可為您的網站提供最完美的解決方案。
ERP軟體客製化導入,室內設計、營造業、裝潢、木作工程、系統櫃工程、會計系統,全面提升公司管理營運效率。
搜尋引擎最佳化(SEO)不僅能提高網站在搜尋結果的排名,更能帶來大量對我們產品或服務真正有需求的訪客。SEO 最棒的特質之一就是不像廣告一樣亂槍打鳥而導致用戶的反感,反而更能提升點閱率跟成交率喔。
圖控軟體﹣監控系統軟體開發 |
此篇文是 Entity Framework 實戰 - 多對多自我關聯 Many to Many , Self Referencing 模型實作 (一)的續篇 , 當我們把基本模型 Product Class 建立好後,我們開始實作一個繼承 DbContext 的子類別,在這邊你可以把 DbContext 當做是資料庫的層次意義角度來看待
新增一個Class 名為 ProductContext.cs
然後按【新增】按鈕,並在 ProductContext 宣示繼承 DbContext 類別,如以下程式碼
1: using System;2: using System.Collections.Generic;3: using System.Data.Entity;4: using System.Linq;5: using System.Text;6: using System.Threading.Tasks;7:8: namespace EF6_ManyToManyAndSelf9: {10: public class ProductContext : DbContext11: {12:13: }14: }
接著加入 DbSet<Product> 的宣告,用於表示 存放著 Product Table(Class)的集合清單
public DbSet<Product> Products;
然後為了完成透過 Product 本身的 Class 來完成 多對多自身關聯,需要 override OnModelCreating Method , 程式碼如下
1: protected override void OnModelCreating(DbModelBuilder modelBuilder)2: {
3: base.OnModelCreating(modelBuilder);4:
5: modelBuilder.Entity<Product>()
6: .HasMany(p => p.RelatedProducts)
7: .WithMany(p => p.AboveProducts)
8: .Map(m =>
9: {
10: m.MapLeftKey("ProductID");11: m.MapRightKey("RelatedProductID");12: m.ToTable("RelatedProduct");13: }
14: );
15: }
到這邊基本上已經完成 EntityFramework 的宣告….
然後讓我們在前端界面使用我們實作好的 ProductContext ,來看看如何使用….程式碼如下
1: using System;2: using System.Collections.Generic;3: using System.Linq;4: using System.Text;5: using System.Threading.Tasks;6:
7: namespace EF6_ManyToManyAndSelf8: {
9: class Program10: {
11: static void Main(string[] args)12: {
13: using (var context = new ProductContext())14: {
15: var product1 = new Product { ProductName = "美容業零售管理系統", Price = 59888M };16: var product2 = new Product { ProductName = "窗簾業ERP系統", Price = 3500000M };17: var product3 = new Product { ProductName = "玩具製造業ERP系統", Price = 6700000M };18: product2.RelatedProducts.Add(product3);
19: product1.RelatedProducts.Add(product2);
20: context.Products.Add(product1);
21: context.SaveChanges();
22: }
23: using (var context = new ProductContext())24: {
25: var product2 = context.Products.First(p => p.ProductName == "窗簾業ERP系統");26: Console.WriteLine("Product: {0} ... {1}", product2.ProductName, product2.Price.ToString("C"));27: Console.WriteLine("Related Products");28: foreach (var prod in product2.RelatedProducts)29: {
30: Console.WriteLine("\t{0} ... {1}", prod.ProductName, prod.Price.ToString("C"));31: }
32: foreach (var prod in product2.AboveProducts)33: {
34: Console.WriteLine("\t{0} ... {1}", prod.ProductName, prod.Price.ToString("C"));35: }
36: }
37:
38: Console.ReadKey();
39: }
40: }
41: }
執行結果為
網智數位-軟體開發(軟件開發)
在我們軟體開發過程中,我們會遇到一種特殊模型實體關係,例如一個線上商品系統,會有產品資料表(Product Table),以及記錄產品的【相關產品】和該產品本身可以被關聯的上層【相關產品】,感覺很繞口,下圖我截取一個 ER-D 示例圖:
上圖ERD 關聯存在所謂的多對多關係 (Many to Many)而且又是自我關聯(自身關聯,Self Referencing),本身的主要邏輯是 RelatedProduct 這個Table,擔任一個用來記錄多對多關聯記錄的中繼Table,RelatedProduct Table包含了2個欄位(ProductID、RelatedProductID),2個欄位都是參考(Referencing)到 Product Table的 ProductID 主鍵值 ( Primary Key ),透過這樣的技巧可以表達一個產品可以關聯多個相關產品,反之也可以表達一個產品可以被多少產品有所關聯….
但現在我要教大家實作一個只需要在 Entity Framework 建立一個 Product Model (POCO),然後透過一些程式寫法技巧,來達成 這種商業資料模型 - 》 多對多自我關聯 Many to Many , Self Referencing 。
首先讓我們用 Visual Studio 開發工具來先新增一個程式專案,在此我程式專案命名為 EF6_ManyToManyAndSelf,然後按確定。
接下來,我們需要透過 NuGet來安裝 EntityFramework ,
在上圖執行安裝按鈕後,後續 NuGet 就會開始安裝 EntityFramewok , 目前 Allen 裝的版本為 6.1.3 穩定版,安裝過程可能會等候一點點時間,裝完後,你會發現專案的參考對了2個參考項目
確定沒問題後,接下來我們來新增一個 Product Class ,用來代表 Product table 的對應,完整程式碼如下:
1: using System;2: using System.Collections.Generic;3: using System.ComponentModel.DataAnnotations;4: using System.ComponentModel.DataAnnotations.Schema;5: using System.Linq;6: using System.Text;7: using System.Threading.Tasks;8:
9: namespace EF6_ManyToManyAndSelf10: {
11: [Table("Product", Schema = "dbo")]12: public class Product13: {
14: public Product()15: {
16: RelatedProducts = new HashSet<Product>();17: AboveProducts = new HashSet<Product>();18: }
19:
20: [Key]
21: [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
22: public int ProductID { get; set; }23:
24: public string ProductName { get; set; }25:
26: public decimal Price { get; set; }27:
28: /// <summary>29: /// 記錄此產品的多個相關的產品30: /// </summary>31: public virtual ICollection<Product> RelatedProducts { get; set; }32:
33: /// <summary>34: /// 記錄此產品被那些上層產品標示為相關的產品35: /// </summary>36: public virtual ICollection<Product> AboveProducts { get; set; }37:
38: }
39: }
實作到這邊已經把基本的 EntityFramework 安裝進來,也把產品模型寫成一個POCO Class ,後續是更進階的 程式技巧已經背後運作解釋,請繼續參閱我撰寫 Entity Framework 實戰 - 多對多自我關聯 Many to Many , Self Referencing 模型實作 (二) 的介紹。
網智數位-軟體開發 (軟件開發)
在競爭激烈的室內設計行業中,企業如何有效整合資源、提升管理效率並專注於客戶服務品質,已成為永續經營的核心課題。我們非常榮幸能夠與 台北莫耳設計 合作,協助他們導入專為室內設計行業量身打造的ERP系統,並透過這一強大的資源管理工具,全面提升客戶報價管理、合約管理及委外廠商...