原創|產品更新|編輯:龔雪|2023-06-15 10:24:55.203|閱讀 136 次
概述:在新版中增強了DevExpress XAF實體框架的核心功能、支持EF Core 6 ORM等,歡迎下載最新版體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress XAF是一款強大的現代應用程序框架,允許同時開發ASP.NET和WinForms。DevExpress XAF采用模塊化設計,開發人員可以選擇內建模塊,也可以自行創建,從而以更快的速度和比開發人員當前更強有力的方式創建應用程序。
在新版中增強了DevExpress XAF實體框架的核心功能、支持EF Core 6 ORM等,歡迎下載最新版體驗!
DevExpress技術交流群8:523159565 歡迎一起進群討論
用戶現在可以使用Entity Framework Core 6來訪問所有基于.NET 6 XAF(WinForms, Blazor和Web API Service)應用程序中的數據。
當用戶通過Entity Framework Core 6訪問數據時,現在可以使用變化跟蹤代理來自動檢測對象屬性的變化。一旦啟用了選項,將不再需要實現INotifyPropertyChanged和INotifyPropertyChanging來通知客戶端屬性值已經改變。
這個新的增強功能幫助用戶簡化業務類實現。
考慮下面的示例,這是在v22.1中一個業務對象的實現:
C#
public class BusinessObject : INotifyPropertyChanged { int id; string name; public int Id { get { return id; } set { if (id != value) { id = value; OnPropertyChanged(); } } } public string Name { get { return name; } set { if (name != value) { name = value; OnPropertyChanged(); } } } protected void OnPropertyChanged([CallerMemberName]string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public event PropertyChangedEventHandler PropertyChanged; }
這是它在v22.2中的轉換方式:
C#
public class BusinessObject { public virtual int Id { get; set; } public virtual string Name { get; set; } }
可以對實現IObjectSpaceLink的對象進行相同的更改,例如這是v22.1中業務對象的實現。
C#
public class BusinessObject : IObjectSpaceLink { // ... public void SomeAction() { // some business-logic uses ObjectSpace } IObjectSpace objectSpace; IObjectSpace IObjectSpaceLink.ObjectSpace { get { return objectSpace; } set { objectSpace = value; } } }
這是它在v22.2中的樣子。
C#
public class BusinessObject { // ... public void SomeAction() { var objectSpace = ((IObjectSpaceLink)this).ObjectSpace; // some business-logic uses objectSpace } }
當配置EF Core DbContext時,調用DbContextOptionsBuilder.UseObjectSpaceLinkProxies方法來為所有持久化類自動實現IObjectSpaceLink。
默認情況下,使用XAF Solution Wizard創建的所有新項目都啟用了UseChangeTrackingProxies選項。
抽象的DevExpress.Persistent.BaseImpl.EF.BaseObject類包括一個關鍵屬性,并實現了IObjectSpaceLink和IXafEntityObject接口。從'BaseObject'繼承避免樣板代碼,并在您的業務對象中實施最佳實踐。
用戶現在可以使用Entity Framework Core 6來訪問后端Web API / REST API應用程序中的數據,新版本中的Web API Service (CRUD、身份驗證和授權)是免費的,作為.NET App Security & Web API Service的一部分提供。
使用服務端點(又名Reports Module)從報表模板和數據庫中過濾的數據下載PDF,使用api/Report/DownloadByKey, api/Report/DownloadByName端點,您可以從存儲在數據庫中的ReportDatav2容器中下載數據。
每個ReportDatav2鏈接到一個“XtraReport”,在Visual Studio IDE中設計的報表數據源和數據模型,用戶可以根據需要傳遞報表容器標識符、數據源標準和其他參數。
XAF的應用程序向導將ReportController自動添加到新的Web API應用程序中,用戶可以擴展和修改此端點來滿足特定需求。
注意:此端點尊重安全權限。
使用服務端點記錄數據庫歷史變更(審計跟蹤模塊),通過Web API 端點中的ORM進行的任何數據更改都不會被注意到,您可以在RDBMS或XAF的管理UI (WinForms, Blazor和/或 ASP. NET Web Forms)中查看相關的日志歷史。
使用服務端點(文件附件模塊)下載存儲在數據庫中的BLOB數據,使用api/MediaFile/DownloadStream端點,您可以從數據模型中聲明的FileData, MediaDataObject, Image或字節數組屬性中下載數據。
使用內置(超過10條)或自定義驗證規則檢查Web API Service中輸入數據的狀態 - 驗證模塊,現在您可以使用IValidator服務來驗證自定義端點中的輸入數據。
現在用戶可以在Web API Service中對非持久性和代理對象執行CRUD操作(與其他持久性對象的方式相同),建議您從NonPersistentBaseObject或其他具有key屬性的類繼承,以強制執行非持久化類的最佳實踐。
MainDemo應用程序現在包含一個預配置的測試項目,其中包含基類和助手,以及最流行的使用場景fixture,該項目將幫助API開發人員為CRUD操作和自定義Web API Service端點編寫單元測試。
C#
[TestFixture] public class MyWebApiTests : BaseWebApiTest { [Test] public async Task TestPostDelete() { var newResult = await api.PostAsync( new TestObject { TestProperty = "test" } ); Assert.NotNull(await api.GetByKeyAsync<TestObject>(newResult.Oid.ToString())); var deleted = await api.DeleteAsync<TestObject>(newResult.Oid.ToString()); Assert.AreEqual(newResult.Oid, deleted.Oid); } [TestCase(typeof(Employee))] [TestCase(typeof(Paycheck))] [TestCase(typeof(Position))] public async Task TestGetBasic(Type objectType) { var result = await api.GetAllAsync(objectType); Assert.Greater(result.Length, 0); } }
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網