原創(chuàng)|產(chǎn)品更新|編輯:龔雪|2023-06-15 10:24:55.203|閱讀 136 次
概述:在新版中增強(qiáng)了DevExpress XAF實(shí)體框架的核心功能、支持EF Core 6 ORM等,歡迎下載最新版體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
DevExpress XAF是一款強(qiáng)大的現(xiàn)代應(yīng)用程序框架,允許同時(shí)開(kāi)發(fā)ASP.NET和WinForms。DevExpress XAF采用模塊化設(shè)計(jì),開(kāi)發(fā)人員可以選擇內(nèi)建模塊,也可以自行創(chuàng)建,從而以更快的速度和比開(kāi)發(fā)人員當(dāng)前更強(qiáng)有力的方式創(chuàng)建應(yīng)用程序。
在新版中增強(qiáng)了DevExpress XAF實(shí)體框架的核心功能、支持EF Core 6 ORM等,歡迎下載最新版體驗(yàn)!
DevExpress技術(shù)交流群8:523159565 歡迎一起進(jìn)群討論
用戶(hù)現(xiàn)在可以使用Entity Framework Core 6來(lái)訪(fǎng)問(wèn)所有基于.NET 6 XAF(WinForms, Blazor和Web API Service)應(yīng)用程序中的數(shù)據(jù)。
當(dāng)用戶(hù)通過(guò)Entity Framework Core 6訪(fǎng)問(wèn)數(shù)據(jù)時(shí),現(xiàn)在可以使用變化跟蹤代理來(lái)自動(dòng)檢測(cè)對(duì)象屬性的變化。一旦啟用了選項(xiàng),將不再需要實(shí)現(xiàn)INotifyPropertyChanged和INotifyPropertyChanging來(lái)通知客戶(hù)端屬性值已經(jīng)改變。
這個(gè)新的增強(qiáng)功能幫助用戶(hù)簡(jiǎn)化業(yè)務(wù)類(lèi)實(shí)現(xiàn)。
考慮下面的示例,這是在v22.1中一個(gè)業(yè)務(wù)對(duì)象的實(shí)現(xiàn):
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中的轉(zhuǎn)換方式:
C#
public class BusinessObject { public virtual int Id { get; set; } public virtual string Name { get; set; } }
可以對(duì)實(shí)現(xiàn)IObjectSpaceLink的對(duì)象進(jìn)行相同的更改,例如這是v22.1中業(yè)務(wù)對(duì)象的實(shí)現(xiàn)。
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 } }
當(dāng)配置EF Core DbContext時(shí),調(diào)用DbContextOptionsBuilder.UseObjectSpaceLinkProxies方法來(lái)為所有持久化類(lèi)自動(dòng)實(shí)現(xiàn)IObjectSpaceLink。
默認(rèn)情況下,使用XAF Solution Wizard創(chuàng)建的所有新項(xiàng)目都啟用了UseChangeTrackingProxies選項(xiàng)。
抽象的DevExpress.Persistent.BaseImpl.EF.BaseObject類(lèi)包括一個(gè)關(guān)鍵屬性,并實(shí)現(xiàn)了IObjectSpaceLink和IXafEntityObject接口。從'BaseObject'繼承避免樣板代碼,并在您的業(yè)務(wù)對(duì)象中實(shí)施最佳實(shí)踐。
用戶(hù)現(xiàn)在可以使用Entity Framework Core 6來(lái)訪(fǎng)問(wèn)后端Web API / REST API應(yīng)用程序中的數(shù)據(jù),新版本中的Web API Service (CRUD、身份驗(yàn)證和授權(quán))是免費(fèi)的,作為.NET App Security & Web API Service的一部分提供。
使用服務(wù)端點(diǎn)(又名Reports Module)從報(bào)表模板和數(shù)據(jù)庫(kù)中過(guò)濾的數(shù)據(jù)下載PDF,使用api/Report/DownloadByKey, api/Report/DownloadByName端點(diǎn),您可以從存儲(chǔ)在數(shù)據(jù)庫(kù)中的ReportDatav2容器中下載數(shù)據(jù)。
每個(gè)ReportDatav2鏈接到一個(gè)“XtraReport”,在Visual Studio IDE中設(shè)計(jì)的報(bào)表數(shù)據(jù)源和數(shù)據(jù)模型,用戶(hù)可以根據(jù)需要傳遞報(bào)表容器標(biāo)識(shí)符、數(shù)據(jù)源標(biāo)準(zhǔn)和其他參數(shù)。
XAF的應(yīng)用程序向?qū)eportController自動(dòng)添加到新的Web API應(yīng)用程序中,用戶(hù)可以擴(kuò)展和修改此端點(diǎn)來(lái)滿(mǎn)足特定需求。
注意:此端點(diǎn)尊重安全權(quán)限。
使用服務(wù)端點(diǎn)記錄數(shù)據(jù)庫(kù)歷史變更(審計(jì)跟蹤模塊),通過(guò)Web API 端點(diǎn)中的ORM進(jìn)行的任何數(shù)據(jù)更改都不會(huì)被注意到,您可以在RDBMS或XAF的管理UI (WinForms, Blazor和/或 ASP. NET Web Forms)中查看相關(guān)的日志歷史。
使用服務(wù)端點(diǎn)(文件附件模塊)下載存儲(chǔ)在數(shù)據(jù)庫(kù)中的BLOB數(shù)據(jù),使用api/MediaFile/DownloadStream端點(diǎn),您可以從數(shù)據(jù)模型中聲明的FileData, MediaDataObject, Image或字節(jié)數(shù)組屬性中下載數(shù)據(jù)。
使用內(nèi)置(超過(guò)10條)或自定義驗(yàn)證規(guī)則檢查Web API Service中輸入數(shù)據(jù)的狀態(tài) - 驗(yàn)證模塊,現(xiàn)在您可以使用IValidator服務(wù)來(lái)驗(yàn)證自定義端點(diǎn)中的輸入數(shù)據(jù)。
現(xiàn)在用戶(hù)可以在Web API Service中對(duì)非持久性和代理對(duì)象執(zhí)行CRUD操作(與其他持久性對(duì)象的方式相同),建議您從NonPersistentBaseObject或其他具有key屬性的類(lèi)繼承,以強(qiáng)制執(zhí)行非持久化類(lèi)的最佳實(shí)踐。
MainDemo應(yīng)用程序現(xiàn)在包含一個(gè)預(yù)配置的測(cè)試項(xiàng)目,其中包含基類(lèi)和助手,以及最流行的使用場(chǎng)景fixture,該項(xiàng)目將幫助API開(kāi)發(fā)人員為CRUD操作和自定義Web API Service端點(diǎn)編寫(xiě)單元測(cè)試。
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); } }
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)