代码升级
1:修改Add方法:
/// <summary>
/// 添加一条记录。
/// </summary>
/// <param name="detail">一条记录</param>
/// <returns>true 成功 false 失败</returns>
/// <example>调用案例:
/// <code>
/// TableBN bn = new TableBN();
/// OrderDT baseDT = new OrderDT();
/// baseDT.ID = 1;
/// baseDT.Name = "订单1";
/// bool result = bn.Add(baseDT);
/// </code>
/// </example>
public new bool Add(BaseDT detail)
{
Data.ObjectBroker.Create(detail);
return true;
}
2:添加DT类的配置文件:
RecorderDT.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="Data.RecorderDT, Data" table="Recorder" discriminator-value="C">
<id name="RedId" type="Int32" column="RedId" unsaved-value="0">
<generator class="identity"/>
</id>
<property name="CreateDate" type="String" column="CreateDate" insert="false" />
<property name="RecDate" type="String" column="RecDate" />
<property name="RecType" type="Int32" column="RecType" />
<property name="RecValue" type="Decimal" column="RecValue" />
<property name="Remark" type="String(250)" column="Remark" />
</class>
</hibernate-mapping>
RecorderDT.cs:
/// <copyright>Xumingxsh 1999-2006</copyright>
/// <version>1.0</version>
/// <author>Xuming</author>
/// <email>Xumingxsh21@126.com</email>
/// <log date="2006-05-30">创建</log>
using System;
using System.Data;
namespace Data
{
/// <summary>
/// Recorder表的描述类。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public class RecorderDT : BaseDataDT
{
public RecorderDT() : base()
{
}
/// <summary>
/// 记录ID。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
private int _RedId;
/// <summary>
/// 记录时间。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
private string _CreateDate;
/// <summary>
/// 花销日期。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
private string _RecDate;
/// <summary>
/// 花销类型。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
private int _RecType;
/// <summary>
/// 花销金额。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
private decimal _RecValue;
/// <summary>
/// 备注。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
private string _Remark;
/// <summary>
/// 记录ID。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public int RedId
{
set
{
_RedId = value;
}
get
{
return _RedId;
}
}
/// <summary>
/// 记录时间。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public string CreateDate
{
set
{
_CreateDate = value;
}
get
{
return _CreateDate;
}
}
/// <summary>
/// 花销日期。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public string RecDate
{
set
{
_RecDate = value;
}
get
{
return _RecDate;
}
}
/// <summary>
/// 花销类型。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public int RecType
{
set
{
_RecType = value;
}
get
{
return _RecType;
}
}
/// <summary>
/// 花销金额。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public decimal RecValue
{
set
{
_RecValue = value;
}
get
{
return _RecValue;
}
}
/// <summary>
/// 备注。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public string Remark
{
set
{
_Remark = value;
}
get
{
return _Remark;
}
}
}
}
RectypeDT.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" >
<class name="Data.RectypeDT, Data" table="RecType">
<id name="RecTypeId" type="Int32" column="RecTypeId">
<generator class="identity"/>
</id>
<property name="RecTypeName" type="String(10)" column="RecTypeName" />
</class>
</hibernate-mapping>
RectypeDT.cs:
/// <copyright>Xumingxsh 1999-2006</copyright>
/// <version>1.0</version>
/// <author>Xuming</author>
/// <email>Xumingxsh21@126.com</email>
/// <log date="2006-05-30">创建</log>
using System;
using System.Data;
namespace Data
{
/// <summary>
/// Rectype表的描述类。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
[Serializable()]
public class RectypeDT : BaseDataDT
{
public RectypeDT() : base()
{
}
/// <summary>
/// 花销类型编号。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
private int _RecTypeId;
/// <summary>
/// 花销类型名称。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
private string _RecTypeName;
/// <summary>
/// 花销类型编号。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public int RecTypeId
{
set
{
_RecTypeId = value;
}
get
{
return _RecTypeId;
}
}
/// <summary>
/// 花销类型名称。
/// </summary>
/// <author>Xuming</author>
/// <log date="2006-05-30">创建</log>
public string RecTypeName
{
set
{
_RecTypeName = value;
}
get
{
return _RecTypeName;
}
}
}
}
3:修改添加记录:
/// <summary>
/// 添加花销记录。
/// </summary>
public void AddRecorder(RecorderDV detail)
{
int recId = GetTypeId(detail.RecTypeName);
detail.RecType = recId;
this.Add(detail);
}
/// <summary>
/// 取得类型编号。
/// </summary>
/// <param name="recTypeName"></param>
/// <returns></returns>
private int GetTypeId(string recTypeName)
{
if (!IsExistType(recTypeName))
{
RectypeDT detail = new RectypeDT();
detail.RecTypeName = recTypeName;
this.Add(detail);
}
RectypeSQL sql = new RectypeSQL();
SqlInfo info = sql.GetTypeID(recTypeName);
return this.GetRows(info);
}
修改后的AddRecorder:
/// <summary>
/// 添加花销记录。
/// </summary>
public void AddRecorder(RecorderDV detail)
{
int recId = GetTypeId(detail.RecTypeName);
detail.RecType = recId;
RecorderDT dtDetail = new RecorderDT();
dtDetail.RecDate = detail.RecDate;
dtDetail.RecType = detail.RecType;
dtDetail.RecValue = detail.RecValue;
dtDetail.Remark = detail.Remark;
this.Add(dtDetail);
}
4:接下来,是把取得花销类型ID和添加花销记录合起来,用NHibernate实现。
步骤:1)修改DT类;2)修改配置文件;3)修改AddRecorder和GetTypeId方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构