当前位置:网站首页>DEV XPO对比之UOW
DEV XPO对比之UOW
2022-07-01 05:51:00 【qq_16215957】
Producer XPObject:
using DevExpress.Data.Filtering;
//using DevExpress.Utils.Base;
using DevExpress.Xpo;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.BaseImpl.PermissionPolicy;
namespace XYZ.Module.BusinessObjects
{
//[ImageName("BO_Contact")]
//[DefaultProperty("DisplayMemberNameForLookupEditorsOfThisType")]
//[DefaultListViewOptions(MasterDetailMode.ListViewOnly, false, NewItemRowPosition.None)]
//[Persistent("DatabaseTableName")]
// Specify more UI options using a declarative approach (https://documentation.devexpress.com/#eXpressAppFramework/CustomDocument112701).
public class XYZ_Producer : BaseObject
{ // Inherit from a different class to provide a custom primary key, concurrency and deletion behavior, etc. (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument113146.aspx).
// Use CodeRush to create XPO classes and properties with a few keystrokes.
// https://docs.devexpress.com/CodeRushForRoslyn/118557
public XYZ_Producer(Session session)
: base(session)
{
}
PermissionPolicyUser GetCurrentUser()
{
PermissionPolicyUser user = null;
try
{
//return Session.GetObjectByKey<PermissionPolicyUser>(SecuritySystem.CurrentUserId); // In XAF apps for versions older than v20.1.7.
user = Session.FindObject<PermissionPolicyUser>(CriteriaOperator.Parse("Oid=CurrentUserId()"));
}
catch (Exception ex)
{
}
return user; // In non-XAF apps where SecuritySystem.Instance is unavailable (v20.1.7+).
}
public override void AfterConstruction()
{
base.AfterConstruction();
CreatedOn = DateTime.Now;
CreatedBy = GetCurrentUser();
}
protected override void OnSaving()
{
base.OnSaving();
UpdatedOn = DateTime.Now;
UpdatedBy = GetCurrentUser();
}
//private string _PersistentProperty;
//[XafDisplayName("My display name"), ToolTip("My hint message")]
//[ModelDefault("EditMask", "(000)-00"), Index(0), VisibleInListView(false)]
//[Persistent("DatabaseColumnName"), RuleRequiredField(DefaultContexts.Save)]
//public string PersistentProperty {
// get { return _PersistentProperty; }
// set { SetPropertyValue(nameof(PersistentProperty), ref _PersistentProperty, value); }
//}
//[Action(Caption = "My UI Action", ConfirmationMessage = "Are you sure?", ImageName = "Attention", AutoCommit = true)]
//public void ActionMethod() {
// // Trigger a custom business logic for the current record in the UI (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112619.aspx).
// this.PersistentProperty = "Paid";
//}
string fCode;
[Size(255)]
//[XafDisplayName("编码")]
public string Code
{
get { return fCode; }
set { SetPropertyValue<string>(nameof(Code), ref fCode, value); }
}
string fName;
[Size(255)]
//[XafDisplayName("名称")]
public string Name
{
get { return fName; }
set { SetPropertyValue<string>(nameof(Name), ref fName, value); }
}
string fAddress;
[Size(255)]
//[XafDisplayName("名称")]
public string Address
{
get { return fAddress; }
set { SetPropertyValue<string>(nameof(Address), ref fAddress, value); }
}
string fLegalRepresentative;
[Size(255)]
//[XafDisplayName("负责人")]
//[ModelDefault("AllowEdit", "True")]
public string LegalRepresentative
{
get { return fLegalRepresentative; }
set { SetPropertyValue<string>(nameof(LegalRepresentative), ref fLegalRepresentative, value); }
}
string fContact;
[Size(255)]
//[XafDisplayName("负责人")]
//[ModelDefault("AllowEdit", "True")]
public string Contact
{
get { return fContact; }
set { SetPropertyValue<string>(nameof(Contact), ref fContact, value); }
}
private string _Phone;
//[XafDisplayName("电话")]
public string Phone
{
get
{
return _Phone;
}
set
{
SetPropertyValue("Phone", ref _Phone, value);
}
}
string fRemark;
[Size(255)]
//[XafDisplayName("备注")]
public string Remark
{
get { return fRemark; }
set { SetPropertyValue<string>(nameof(Remark), ref fRemark, value); }
}
PermissionPolicyUser createdBy;
//[ModelDefault("AllowEdit", "False")]
public PermissionPolicyUser CreatedBy
{
get { return createdBy; }
set { SetPropertyValue("CreatedBy", ref createdBy, value); }
}
DateTime createdOn;
//[ModelDefault("AllowEdit", "False"), ModelDefault("DisplayFormat", "G")]
public DateTime CreatedOn
{
get { return createdOn; }
set { SetPropertyValue("CreatedOn", ref createdOn, value); }
}
PermissionPolicyUser updatedBy;
//[ModelDefault("AllowEdit", "False")]
public PermissionPolicyUser UpdatedBy
{
get { return updatedBy; }
set { SetPropertyValue("UpdatedBy", ref updatedBy, value); }
}
DateTime updatedOn;
//[ModelDefault("AllowEdit", "False"), ModelDefault("DisplayFormat", "G")]
public DateTime UpdatedOn
{
get { return updatedOn; }
set { SetPropertyValue("UpdatedOn", ref updatedOn, value); }
}
}
}
调用:
string connectionString;
IDataLayer dataLayer = null;
UnitOfWork uow = null;
private void tESTUOWToolStripMenuItem_Click(object sender, EventArgs e)
{
KeepUOWConnect();
XYZ_Producer producer = new XYZ_Producer(uow);
producer.Name = "";
producer.Contact = "david";
producer.Save();
uow.CommitChanges();
}
public void KeepUOWConnect()
{
try
{
if (uow == null)
{
logHelper.InfoOnce($"数据库连接为空!");
if (connectionString == null)
connectionString = ConfigurationManager.ConnectionStrings["ConnectionString_XYZData"].ConnectionString;
if (dataLayer == null)
dataLayer = XpoDefault.GetDataLayer(connectionString, DevExpress.Xpo.DB.AutoCreateOption.DatabaseAndSchema);
logHelper.InfoOnce($"数据库已连接!");
uow = new UnitOfWork(dataLayer);
}
}
catch (Exception ex)
{
logHelper.ErrorOnce($"数据库连接失败!{Environment.NewLine}Error Message:{Environment.NewLine}{ex.Message}{Environment.NewLine}StackTrace:{Environment.NewLine}{ex.StackTrace}");
}
finally
{
}
}
/// <summary>
///
/// </summary>
public void ReleaseUOWConnect()
{
try
{
if (uow != null)
{
uow.Disconnect();
uow.Dispose();
if (dataLayer != null)
{
dataLayer.Dispose();
}
dataLayer = null;
uow = null;
}
}
catch (Exception ex)
{
logHelper.ErrorOnce($"释放数据库连接失败!{Environment.NewLine}Error Message:{Environment.NewLine}{ex.Message}{Environment.NewLine}StackTrace:{Environment.NewLine}{ex.StackTrace}");
}
finally
{
}
}
边栏推荐
- My experience from technology to product manager
- excel動態圖錶
- 无限水平大理石游戏
- Boot + jsp University Community Management System (with source Download Link)
- Preliminary level of C language -- selected good questions on niuke.com
- Thoughts on a "01 knapsack problem" expansion problem
- Orcle创建用户+角色
- tese_ Time_ 2h
- Code shoe set - mt3114 · interesting balance - explain it with examples
- Call us special providers of personal cloud services for College Students
猜你喜欢
芯片,建立在沙粒上的帝国!
Some errors encountered in MySQL data migration
LED lighting used in health lighting
为了保护自己的数据,他奋斗了一天一夜
Educational administration management system of SSM (free source code)
穿越派·派盘 + Mountain Duck = 数据本地管理
CJC8988带2个立体声耳机驱动器的低功率立体声编解码器
基于LabVIEW的计时器
excel初级应用案例——杜邦分析仪
OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)
随机推荐
芯片,建立在沙粒上的帝国!
How to transmit and share 4GB large files remotely in real time?
Send you through the data cloud
FPGA - 7系列 FPGA内部结构之Clocking -01- 时钟架构概述
HCM 初学 ( 四 ) - 时间
Don't put your notes and videos everywhere!
OpenGL ES: (2) OpenGL ES 与 EGL、GLSL的关系
Call us special providers of personal cloud services for College Students
Retention rate of SQL required questions
Know the future of "edge computing" from the Nobel prize!
Continue to learn MySQL
Idea start view project port
【医学分割】u2net
千万不要把笔记视频乱放!
基于LabVIEW的计时器
OpenGL ES: (3) EGL、EGL绘图的基本步骤、EGLSurface、ANativeWindow
How to add a gourd pie plate
1034 Head of a Gang
Brief description of activation function
OneFlow源码解析:算子签名的自动推断