翻譯|使用教程|編輯:龔雪|2022-03-02 10:23:36.157|閱讀 294 次
概述:本系列內(nèi)容將開(kāi)始根據(jù)DevExpress WinForms MVVM創(chuàng)建示例應(yīng)用程序,并學(xué)習(xí)如何使用 Scaffolding Wizard。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
在本文中,您將開(kāi)始創(chuàng)建根據(jù) MVVM 模式構(gòu)建的示例應(yīng)用程序,并學(xué)習(xí)如何使用 Scaffolding Wizard。
1. 創(chuàng)建一個(gè)新的WinForms應(yīng)用程序。 要?jiǎng)?chuàng)建項(xiàng)目的數(shù)據(jù)模型,請(qǐng)?zhí)砑右粋€(gè)新的模型文件夾并使用下面的代碼片段創(chuàng)建三個(gè)類(lèi)——帳戶、交易和類(lèi)別,這些類(lèi)使用數(shù)據(jù)注釋屬性并要求將 System.ComponentModel.DataAnnotations 庫(kù)包含在您的項(xiàng)目中。
賬戶數(shù)據(jù)模型
C#
using System.ComponentModel.DataAnnotations; namespace MVVMExpenses.DataModels { public class Account { [Key, Display(AutoGenerateField = false)] public long ID { get; set; } [Required, StringLength(30, MinimumLength = 4)] [Display(Name = "ACCOUNT")] public string Name { get; set; } [DataType(DataType.Currency)] [Display(Name = "AMOUNT")] public decimal Amount { get; set; } public override string ToString() { return Name + " (" + Amount.ToString("C") + ")"; } public virtual ICollection<Transaction> Transactions { get; set; } } }
VB.NET
Imports System.ComponentModel.DataAnnotations Namespace MVVMExpenses.DataModels Public Class Account <Key, Display(AutoGenerateField := False)> Public Property ID() As Long <Required, StringLength(30, MinimumLength := 4), Display(Name := "ACCOUNT")> Public Property Name() As String <DataType(DataType.Currency), Display(Name := "AMOUNT")> Public Property Amount() As Decimal Public Overrides Function ToString() As String Return Name & " (" & Amount.ToString("C") & ")" End Function Public Overridable Property Transactions() As ICollection(Of Transaction) End Class End Namespace
類(lèi)別數(shù)據(jù)模型
C#
using System.ComponentModel.DataAnnotations; namespace MVVMExpenses.DataModels { public class Category { [Key, Display(AutoGenerateField = false)] public long ID { get; set; } [Required, StringLength(30, MinimumLength = 5)] [Display(Name = "CATEGORY")] public string Name { get; set; } [EnumDataType(typeof(TransactionType))] [Display(Name = "TRANSACTION TYPE")] public TransactionType Type { get; set; } public override string ToString() { return Name + " (" + Type.ToString() + ")"; } public virtual ICollection<Transaction> Transactions { get; set; } } }
VB.NET
Namespace MVVMExpenses.DataModels Public Class Category <Key, Display(AutoGenerateField := False)> Public Property ID() As Long <Required, StringLength(30, MinimumLength := 5), Display(Name := "CATEGORY")> Public Property Name() As String <EnumDataType(GetType(TransactionType)), Display(Name := "TRANSACTION TYPE")> Public Property Type() As TransactionType Public Overrides Function ToString() As String Return Name & " (" & Type.ToString() & ")" End Function Public Overridable Property Transactions() As ICollection(Of Transaction) End Class End Namespace
交易數(shù)據(jù)模型
C#
using System.ComponentModel.DataAnnotations; namespace MVVMExpenses.DataModels { public enum TransactionType { Expense, Income } public class Transaction { [Key, Display(AutoGenerateField = false)] public long ID { get; set; } [Display(AutoGenerateField = false)] public long AccountID { get; set; } [Display(Name = "ACCOUNT")] public virtual Account Account { get; set; } [Display(AutoGenerateField = false)] public long CategoryID { get; set; } [Display(Name = "CATEGORY")] public virtual Category Category { get; set; } [DataType(DataType.Date)] [Display(Name = "DATE")] public DateTime Date { get; set; } [DataType(DataType.Currency)] [Display(Name = "AMOUNT")] public decimal Amount { get; set; } [DataType(DataType.MultilineText)] [Display(Name = "COMMENT")] public string Comment { get; set; } } }
VB.NET
Namespace MVVMExpenses.DataModels Public Enum TransactionType Expense Income End Enum Public Class Transaction <Key, Display(AutoGenerateField := False)> Public Property ID() As Long <Display(AutoGenerateField := False)> Public Property AccountID() As Long <Display(Name := "ACCOUNT")> Public Overridable Property Account() As Account <Display(AutoGenerateField := False)> Public Property CategoryID() As Long <Display(Name := "CATEGORY")> Public Overridable Property Category() As Category <DataType(DataType.Date), Display(Name := "DATE")> Public Property [Date]() As Date <DataType(DataType.Currency), Display(Name := "AMOUNT")> Public Property Amount() As Decimal <DataType(DataType.MultilineText), Display(Name := "COMMENT")> Public Property Comment() As String End Class End Namespace
2. 跳轉(zhuǎn)到Visual Studio 的 Project 菜單并選擇 Manage NuGet Packages...菜單項(xiàng),在在線存儲(chǔ)中搜索 Entity Framework 6 package,然后單擊 ‘Install’,請(qǐng)注意如果未安裝此 NuGet 包,您將無(wú)法在此示例應(yīng)用程序中使用實(shí)體模型。
3. 添加以下 DbContext 類(lèi)后代,它將用作 DevExpress Scaffolding Wizard 的上下文。
C#
using System.Data.Entity; using MVVMExpenses.DataModels; namespace MVVMExpenses.DataBase { public class MyDbContext : System.Data.Entity.DbContext { static MyDbContext() { System.Data.Entity.Database.SetInitializer<MyDbContext>(null); } public DbSet<Account> Accounts { get; set; } public DbSet<Category> Categories { get; set; } public DbSet<Transaction> Transactions { get; set; } } }
VB.NET
Imports System.Data.Entity Imports MVVMExpenses.DataModels Namespace MVVMExpenses.DataBase Public Class MyDbContext Inherits System.Data.Entity.DbContext Shared Sub New() System.Data.Entity.Database.SetInitializer(Of MyDbContext)(Nothing) End Sub Public Property Accounts() As DbSet(Of Account) Public Property Categories() As DbSet(Of Category) Public Property Transactions() As DbSet(Of Transaction) End Class End Namespace
4. 在繼續(xù)下一步之前,構(gòu)建您的項(xiàng)目并確保它編譯時(shí)沒(méi)有錯(cuò)誤。 然后,在 Visual Studio 解決方案資源管理器中右鍵單擊您的項(xiàng)目并選擇 Add DevExpress Item - Data Model Scaffolding...(參見(jiàn)下圖)。 這將啟動(dòng) Scaffolding Wizard,它將生成完整的應(yīng)用程序?qū)哟谓Y(jié)構(gòu),包括來(lái)自數(shù)據(jù)上下文的 MVVM-ready DataModel。
注意:如果缺少此菜單項(xiàng),請(qǐng)右鍵單擊您的項(xiàng)目并選擇默認(rèn)的 Visual Studio Add - New Item... 選項(xiàng)。 在對(duì)話框中,選擇 DevExpress Template Gallery 并手動(dòng)啟動(dòng) Scaffolding Wizard - 選擇 Data Model Scaffolding 選項(xiàng)卡(WinForms Data Models 組)并單擊右下角的 Run Wizard 按鈕。
在 Wizard 對(duì)話框中,選擇在第二步中創(chuàng)建的上下文,然后單擊 Next。 檢查所有必需的表和視圖,然后單擊Finish來(lái)啟動(dòng)模型生成。
5. 結(jié)果,您將看到許多新文件、文件夾和類(lèi)添加到您的應(yīng)用程序中。
目前,只有向?qū)傻膬蓚€(gè)文件夾值得一提 - 包含您的 CRUD 數(shù)據(jù)模型的 DataModel 文件夾和包含 DbContext 中每個(gè)表的 MVVM ViewModel 的 ViewModels 文件夾 - Account、Category 和 Transaction。 在接下來(lái)的課程中,您將學(xué)習(xí)如何為這些 ViewModel 創(chuàng)建 View。
DevExpress WinForm擁有180+組件和UI庫(kù),能為Windows Forms平臺(tái)創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無(wú)論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
更多產(chǎn)品正版授權(quán)詳情及優(yōu)惠,歡迎咨詢
DevExpress技術(shù)交流群5:742234706 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)