在本文中,您将开始创建根据 MVVM 模式构建的示例应用程序,并学习如何使用 Scaffolding Wizard。
获取工具下载 - DevExpress v21.2
1. 创建一个新的WinForms应用程序。 要创建项目的数据模型,请添加一个新的模型文件夹并使用下面的代码片段创建三个类——帐户、交易和类别,这些类使用数据注释属性并要求将 System.ComponentModel.DataAnnotations 库包含在您的项目中。
账户数据模型
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 Transactions { get; set; }
}
}
类别数据模型
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 Transactions { get; set; }
}
}
交易数据模型
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; }
}
}
2. 跳转到Visual Studio 的 Project 菜单并选择 Manage NuGet Packages...菜单项,在在线存储中搜索 Entity Framework 6 package,然后单击 ‘Install’,请注意如果未安装此 NuGet 包,您将无法在此示例应用程序中使用实体模型。
3. 添加以下 DbContext 类后代,它将用作 DevExpress Scaffolding Wizard 的上下文。
using System.Data.Entity;
using MVVMExpenses.DataModels;
namespace MVVMExpenses.DataBase
{
public class MyDbContext : System.Data.Entity.DbContext
{
static MyDbContext()
{
System.Data.Entity.Database.SetInitializer(null);
}
public DbSet Accounts { get; set; }
public DbSet Categories { get; set; }
public DbSet Transactions { get; set; }
}
}
4. 在继续下一步之前,构建您的项目并确保它编译时没有错误。 然后,在 Visual Studio 解决方案资源管理器中右键单击您的项目并选择 Add DevExpress Item - Data Model Scaffolding...(参见下图)。 这将启动 Scaffolding Wizard,它将生成完整的应用程序层次结构,包括来自数据上下文的 MVVM-ready DataModel。
注意:如果缺少此菜单项,请右键单击您的项目并选择默认的 Visual Studio Add - New Item... 选项。 在对话框中,选择 DevExpress Template Gallery 并手动启动 Scaffolding Wizard - 选择 Data Model Scaffolding 选项卡(WinForms Data Models 组)并单击右下角的 Run Wizard 按钮。
在 Wizard 对话框中,选择在第二步中创建的上下文,然后单击 Next。 检查所有必需的表和视图,然后单击Finish来启动模型生成。
5. 结果,您将看到许多新文件、文件夹和类添加到应用程序中。
目前,只有向导生成的两个文件夹值得一提 - 包含您的 CRUD 数据模型的 DataModel 文件夹和包含 DbContext 中每个表的 MVVM ViewModel 的 ViewModels 文件夹 - Account、Category 和 Transaction。 在接下来的课程中,您将学习如何为这些 ViewModel 创建 View。
文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]