小编Mar*_*yer的帖子

如何将ODP.NET集成到Repository类中?

我的域模型提供了例如以下对象Report : IEntity<Report>.我通常检索Oracle用户定义的类型对象(或集合类型)表单存储过程.对于所有类型,C#类由ODP.NET Visual Studio自定义类向导生成.所以我有以下课程,例如:

public class UDT_REPORT : INullable, IOracleCustomType, IXmlSerializable {
    private bool m_IsNull;
    private decimal m_REPORT_ID;
    private decimal m_VALUE;                
    // etc
}
Run Code Online (Sandbox Code Playgroud)

目前我正在尝试为C#应用程序创建一个新的数据访问层.我想在这种情况下应用存储库模式,以实现松耦合和更好的可测试性.但是如何将这些生成的类集成到存储库中?如何设计ReportRepository课程?

public interface IReportRepository
{         
    Report Find(ReportId id);
    IList<Report> FindAll();
    void Store(Report Report);
}
Run Code Online (Sandbox Code Playgroud)

我应该使用以下方法吗?静态数据库代理类,例如Read<T>(),使用给定委托公开泛型方法以进行数据检索和映射.以及用于创建数据库提供程序的工厂.

public static T Read<T>(string sql, Func<IDataReader, T> fetch, object[] parms = null)
{
    using (var connection = factory.CreateConnection())
    {
        connection.ConnectionString = connectionString;

        using (var command = factory.CreateCommand())
        {
            // Add connection; sql command text; …
Run Code Online (Sandbox Code Playgroud)

c# oracle odp.net

5
推荐指数
1
解决办法
1119
查看次数

将 Dapper 与 Oracle 用户定义类型结合使用

有没有办法将 Dapper 与存储过程返回的 Oracle 用户定义类型一起使用?Dapper 似乎适用于存储过程(请参阅将 Dapper 与返回游标的 Oracle 存储过程一起使用)。

var p = new OracleDynamicParameters();
p.Add("param_list", null, OracleDbType.Object, ParameterDirection.Output);
p.Add("param_reco", null, OracleDbType.Object, ParameterDirection.Output);
Run Code Online (Sandbox Code Playgroud)

在我的示例中,我添加了一个 UDT 集合对象作为输出参数 ( param_list)。我正在使用Dapper – Micro ORM for Oracle 和 Microsoft .NET 中OracleDynamicParameters发布的自定义。

我阅读 ORM 相关的东西越多,我就越认为 Oracle UDT 对象是一个障碍。在这种情况下,普通的 ADO.NET 和生成的 C# 实体类似乎是唯一的方法。也许automapper.org可用于将域对象映射到 UDT 对象。

.net c# oracle orm dapper

5
推荐指数
1
解决办法
3953
查看次数

标签 统计

c# ×2

oracle ×2

.net ×1

dapper ×1

odp.net ×1

orm ×1