这可能是在“讨论”方面,但我真的很想听听您对此的看法。
以前我经常编写处理读取和写入的数据访问类,这经常导致糟糕的命名,如 FooIoHandler 等。 难以命名的类可能设计不佳的经验表明这不是一个好的解决方案。
所以,我最近开始将数据访问拆分为 FooWriter 和 FooReader,这会导致更好的名称并提供一些额外的灵活性,但同时我有点喜欢将它们放在一起,如果类不是很大的话。
读写器分离是更好的设计,还是应该将它们结合起来?如果我应该将它们组合起来,我到底应该给这个类命名什么?
谢谢/埃里克
这有点难以解释,我希望我的英语足够:
我有一个类"A",它应该维护一个类"B"的对象列表(就像一个私有列表).类"A"的使用者应该能够将项添加到列表中.将项目添加到列表后,消费者应该无法再次修改它们,单独留下他不应该使用列表本身(添加或删除项目).但他应该能够枚举列表中的项目并获取它们的值.有它的模式吗?你会怎么做?
如果问题不够清楚,请告诉我.
我正在开发一个项目,我需要生成一系列类来表示/访问数据库中的数据.休眠或亚音速等第三方项目不是一种选择.我是这个主题领域的新手,所以我正在寻找有关该主题的信息.该项目位于.net,我正在使用MyGeneration.我主要是在寻找信息.
有关数据访问代码生成主题的最佳资源是什么?
请一次只发布一个链接,并在发布前查找您的资源.如果您找到了自己的资源,请投票而不是发布..(我对代表不感兴趣,只是信息)
我正在开发的项目在其所有样板代表中使用直接的JDBC数据访问,并且不使用任何事务.我觉得使用事务并简化数据访问方法的编写方式很重要,特别是当前正在进行一些更改.该项目已经存在了很长一段时间,并不适合ORM框架.它也使用了很多Singletons(呃)并解开它以使它能够使用依赖注入将是相当多的工作,我不认为我可以说服任何人我们现在应该这样做.
我喜欢Spring JDBC的界面,特别是通过它SimpleJdbcTemplate.我的问题是如何为此启用一些简单的(每个servlet请求)事务,而不必在每个数据访问方法或使用Spring IoC容器或AOP中以编程方式设置任何内容.我玩过我自己的架构,最终得到一个类似于SimpleJdbcTemplates 的接口,当在请求的上下文中调用它时,可以使用单个请求本地连接和事务(通过ServletRequestListenera ThreadLocal).它似乎运行良好,但我认为使用像Spring JDBC这样的好的外部库会更好.
有人对此有经验吗?
我正在从.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) 我们的SOA WCF系统中有一个数据访问服务.此服务负责在"系统范围"数据库表上执行CRUD(创建,更新,删除)操作,并且也是查询数据的来源.想要访问DAS控制下的表的系统中的任何其他服务必须转到DAS来获取或修改它.我们使用Entity Framework并为此DAS构建了我们自己的POCO状态跟踪系统.
我们的数据库中有其他表属于单个服务,只存储数据供自己使用,即在崩溃和恢复或记录业务信息时可以访问的状态信息.我们有一条规则,任何一个表都不能被多个服务访问:因此多个服务所需的数据最终会在DAS中出现.
事实是,我从来没有真正理解为什么数据访问服务是一个好主意,而不是直接访问表.它似乎更慢,我们的DAS不是事务性的,因为它不能发回数据库更新的POCO图(一次只有一个POCOS),我们也有问题,DAS实际上是另一个需要数据的服务的客户端从它...循环依赖.
为什么要打扰DAS?为什么DAS在SOA方面如此重要?我在这里错过了什么?单点控制?
它是一个SOA设计缺陷,并非所有表都是DAS的一部分,而且某些服务有自己的"私有"表吗?
关于这个欢迎的任何讨论.
我有许多包含这样的表的静态类:
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) 我想知道人们在Android上使用什么作为通用数据访问模式?内容提供商?库?DAO的?
非常感谢!
我们使用的是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客户端.
我正在尝试打开一个旧的 interbase.gdb文件。这对我来说是一个新的步骤,我不知道从哪里开始任何建议都会有很大帮助,过去几天我一直在互联网上搜索,但我仍然需要知道如何去做。
data-access ×10
c# ×3
oracle ×3
.net ×2
android ×1
architecture ×1
asp.net ×1
collections ×1
crud ×1
datatable ×1
interbase ×1
java ×1
jdbc ×1
oop ×1
resources ×1
soa ×1
spring-jdbc ×1
transactions ×1
wcf ×1