标签: data-access

将数据访问类拆分为读取器和写入器还是将它们组合起来?

这可能是在“讨论”方面,但我真的很想听听您对此的看法。

以前我经常编写处理读取和写入的数据访问类,这经常导致糟糕的命名,如 FooIoHandler 等。 难以命名的类可能设计不佳的经验表明这不是一个好的解决方案。

所以,我最近开始将数据访问拆分为 FooWriter 和 FooReader,这会导致更好的名称并提供一些额外的灵活性,但同时我有点喜欢将它们放在一起,如果类不是很大的话。

读写器分离是更好的设计,还是应该将它们结合起来?如果我应该将它们组合起来,我到底应该给这个类命名什么?

谢谢/埃里克

architecture oop data-access

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

在c#中控制对内部集合的访问 - 需要模式

这有点难以解释,我希望我的英语足够:

我有一个类"A",它应该维护一个类"B"的对象列表(就像一个私有列表).类"A"的使用者应该能够将项添加到列表中.将项目添加到列表后,消费者应该无法再次修改它们,单独留下他不应该使用列表本身(添加或删除项目).但他应该能够枚举列表中的项目并获取它们的值.有它的模式吗?你会怎么做?

如果问题不够清楚,请告诉我.

c# collections design-patterns data-access

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

用于生成数据库对象的代码的资源

我正在开发一个项目,我需要生成一系列类来表示/访问数据库中的数据.休眠或亚音速等第三方项目不是一种选择.我是这个主题领域的新手,所以我正在寻找有关该主题的信息.该项目位于.net,我正在使用MyGeneration.我主要是在寻找信息.

有关数据访问代码生成主题的最佳资源是什么?


请一次只发布一个链接,并在发布前查找您的资源.如果您找到了自己的资源,请投票而不是发布..(我对代表不感兴趣,只是信息)

oracle resources code-generation data-access

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

如何在IoC容器外部进行简单的Spring JDBC事务?

我正在开发的项目在其所有样板代表中使用直接的JDBC数据访问,并且不使用任何事务.我觉得使用事务并简化数据访问方法的编写方式很重要,特别是当前正在进行一些更改.该项目已经存在了很长一段时间,并不适合ORM框架.它也使用了很多Singletons(呃)并解开它以使它能够使用依赖注入将是相当多的工作,我不认为我可以说服任何人我们现在应该这样做.

我喜欢Spring JDBC的界面,特别是通过它SimpleJdbcTemplate.我的问题是如何为此启用一些简单的(每个servlet请求)事务,而不必在每个数据访问方法或使用Spring IoC容器或AOP中以编程方式设置任何内容.我玩过我自己的架构,最终得到一个类似于SimpleJdbcTemplates 的接口,当在请求的上下文中调用它时,可以使用单个请求本地连接和事务(通过ServletRequestListenera ThreadLocal).它似乎运行良好,但我认为使用像Spring JDBC这样的好的外部库会更好.

有人对此有经验吗?

java data-access transactions jdbc spring-jdbc

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

Oracle.Dataaccess错误ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小

我正在从.NET应用程序调用存储过程.proc返回Varchar2类型的out参数.为了获取out参数,我将参数作为OracleParameter传递给命令:

parm12 = new OracleParameter("testkey"
                              , OracleDbType.Varchar2
                              , out2
                              , ParameterDirection.Output);
Run Code Online (Sandbox Code Playgroud)

当我执行proc时,我收到一个错误

PL/SQL: numeric or value error: character string buffer too small.
Run Code Online (Sandbox Code Playgroud)

.net oracle data-access

5
推荐指数
2
解决办法
7118
查看次数

WCF SOA:CRUD数据访问服务......为什么这么麻烦(或者我们的设计是错误的)?

我们的SOA WCF系统中有一个数据访问服务.此服务负责在"系统范围"数据库表上执行CRUD(创建,更新,删除)操作,并且也是查询数据的来源.想要访问DAS控制下的表的系统中的任何其他服务必须转到DAS来获取或修改它.我们使用Entity Framework并为此DAS构建了我们自己的POCO状态跟踪系统.

我们的数据库中有其他表属于单个服务,只存储数据供自己使用,即在崩溃和恢复或记录业务信息时可以访问的状态信息.我们有一条规则,任何一个表都不能被多个服务访问:因此多个服务所需的数据最终会在DAS中出现.

事实是,我从来没有真正理解为什么数据访问服务是一个好主意,而不是直接访问表.它似乎更慢,我们的DAS不是事务性的,因为它不能发回数据库更新的POCO图(一次只有一个POCOS),我们也有问题,DAS实际上是另一个需要数据的服务的客户端从它...循环依赖.

为什么要打扰DAS?为什么DAS在SOA方面如此重要?我在这里错过了什么?单点控制?

它是一个SOA设计缺陷,并非所有表都是DAS的一部分,而且某些服务有自己的"私有"表吗?

关于这个欢迎的任何讨论.

wcf soa entity-framework data-access crud

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

从数据表中获取单个值的最佳方法?

我有许多包含这样的表的静态类:

using System;
using System.Data;
using System.Globalization;

public static class TableFoo
{
    private static readonly DataTable ItemTable;

    static TableFoo()
    {
        ItemTable = new DataTable("TableFoo") { Locale = CultureInfo.InvariantCulture };
        ItemTable.Columns.Add("Id", typeof(int));
        ItemTable.Columns["Id"].Unique = true;
        ItemTable.Columns.Add("Description", typeof(string));
        ItemTable.Columns.Add("Data1", typeof(int));
        ItemTable.Columns.Add("Data2", typeof(double));

        ItemTable.Rows.Add(0, "Item 1", 1, 1.0);
        ItemTable.Rows.Add(1, "Item 2", 1, 1.0);
        ItemTable.Rows.Add(2, "Item 3", 2, 0.75);
        ItemTable.Rows.Add(3, "Item 4", 4, 0.25);
        ItemTable.Rows.Add(4, "Item 5", 1, 1.0);
    }

    public static DataTable GetItemTable()
    {
        return ItemTable;
    }

    public static int Data1(int id)
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# datatable data-access

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

Android数据访问设计模式:内容提供者与存储库

我想知道人们在Android上使用什么作为通用数据访问模式?内容提供商?库?DAO的?

非常感谢!

android design-patterns data-access

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

如何修复"提供程序与Oracle客户端版本不兼容"?

我们使用的是Oracle.DataAccess.dll程序集版本2.102.2.20(32位).

我将我们的Web API应用程序部署到IIS并尝试打开和关闭连接:

 private static void CheckConnectionUsingOracleClient(string connection)
        {
            var logger = DiContainer.Resolve<ILogger>();

            try
            {
                logger.LogInfo("Trying to connect to " + connection);
                // check whether you can connect to the shop using Oracle.DataAccess
                using (var cnn = new Oracle.DataAccess.Client.OracleConnection(connection))
                {
                    cnn.Open();
                    cnn.Close();
                }

                logger.LogInfo("Succeeded to connect to " + connection);
            }
            catch (System.Exception ex)
            {
                logger.LogError("Failed to connect to " + connection, ex);
            }
        }
Run Code Online (Sandbox Code Playgroud)

在我的本地机器上它很好,但是在这个服务器上它会在尝试初始化OracleConnection时抛出异常:

对于"Oracle.DataAccess.Client.OracleConnection"的类型初始值引发异常.---> Oracle.DataAccess.Client.OracleException:提供程序不能与Oracle客户端的版本兼容

我已经在服务器上安装Oracle客户端11.2(32位)和I可以看到,在GAC(C:\ WINDOWS \组件)的Oracle.DataAccess组件安装在32位处理器体系结构.它在我们的一台服务器上工作正常但不是这一台.

在IIS中,我在应用程序池上设置了"启用32位应用程序".

怎么修好?到目前为止我花了10多个小时尝试不同的东西:(

理想情况下,我希望能够使用Oracle.DataAccess.dll而无需在服务器上安装Oracle客户端.

c# asp.net oracle data-access oracle-client

5
推荐指数
2
解决办法
4万
查看次数

打开 .gdb 数据库文件

我正在尝试打开一个旧的 interbase.gdb文件。这对我来说是一个新的步骤,我不知道从哪里开始任何建议都会有很大帮助,过去几天我一直在互联网上搜索,但我仍然需要知道如何去做。

interbase data-access data-extraction

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