我现在正在建立一个小型网站,在那里我写下了出现的问题,并回答了其他问题.目前我正在使用DAL,就像这里描述的那样.现在我一直在研究其他模型,特别是使用Linq2SQL和ADO.net Entries框架的基于linq的模型.我意识到我正在以某种方式将数据访问移动到代码层,因为我当时正在过滤掉例如带有linq查询的toplist.我开始这样做的原因是因为DAL在任何时候都没有真正与DB同步,并且当我在DB中更改某些内容时,可空类型变得不可为空.然后,如果我将表重新导入数据表,我的查询将丢失.
我的简单问题是,如果你今天要为ASP.net提供一个好的DAL,那会是什么?建议,经验非常欢迎.
我目前正在使用一个大型数据库(大约500个表),没有任何外键定义.
我的问题是有一种简单的方法可以在实体框架(版本1或版本2)中建立关系,而无需手动完成所有操作吗?
还有一些表具有复杂的关系类型.例如,客户有一个parentID,但这可以链接到同一个表中的另一个客户(customerID)或链接到帐户表中的帐户(accountID).这种关系在实体框架中是否可行?
如果这是不可能的,或者如果有人对Enitity Framework的替代解决方案有任何意见,我不仅仅对想法持开放态度.nHibernate或活跃记录会是更好的解决方案吗?或者更容易创建自己的业务对象和数据访问?
干杯
西蒙
这两者有什么区别?它们乍一看似乎具有相同的功能.哪一个具有更快的性能,哪一个更容易使用?
我是这个概念数据访问层和数据访问对象的新手.
我想了解数据访问层和数据访问对象之间的区别.请指导我.
我真的想尝试使用绿地应用程序尝试实体框架4 Code First CTP,但我想确保地理空间搜索在我做之前不会成为问题,或者我会去另一条路线.
有没有人用EF CF进行地理空间搜索?如果是这样,你是怎么做到的,为什么?
这是我第一次与Oracle合作,而且我们都讨厌在你使用特定模型的同时使用外国产品,尽管这是我们的工作,我们必须做到.
现在我已经安装了Oracle 11g,并复制并引用了Oracle.DataAccess.dll,创建了一个方法,用于打开连接并尝试从服务器上创建的视图中检索某些对象.
方法:
public BindingList<HeaderReceiver> GetHeaderReceivers()
{
try
{
using (OracleConnection db = new OracleConnection(BaseDataAccess.ConnString))
{
string cmdText = "select * from p_customer t";
BindingList<HeaderReceiver> headerReceivers = new BindingList<HeaderReceiver>();
OracleCommand cmd = new OracleCommand(cmdText) { CommandType = CommandType.Text };
db.Open();
OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); <--- Error Occurs HERE!!!
while (reader.Read())
headerReceivers.Add(HeaderReceiver.GetInstance(reader));
CustBranchRepository rep = new CustBranchRepository();
headerReceivers.ForEach(p => p.DetailsBranch = rep.GetDetailReceivers(p.Id));
reader.Close();
db.Close();
return headerReceivers;
}
}
catch (Exception ex)
{
ExporterLogger.Log(ex);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当ExecuteReader()提交时,我得到了这个InvalidOperationException.
Operation is …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个调用oracle存储过程的Web服务.该过程有2个输入 - 字符串(company_code)和int(客户代码).它有2个输出参数; 数字(pout_addr_code)和varchar2(pout_descr).当我从SQL Developer运行此过程时,一切正常,并且两个值都按预期返回.当我从C#Web服务调用该过程时,执行时出现错误"Oracle.DataAccess.Client.OracleException:ORA-06502:PL/SQL:numeric或value error",而不是在编译期间.
如果我注释掉cmd.ExecuteNonQuery()和返回pout_addr_code.Value ...行,它将正常运行并输出我的测试字符串.
如果我从过程中删除varchar2输出并注释掉添加pout_descr参数并注释掉"我返回..."的部分,它运行正常,包括从存储过程返回值.
所以,在我看来,这个问题是在执行NonQuery当程序有OracleDbType.Varchar2线.在使用Oracle.DataAccess引用在C#中添加输出参数时,是否还有其他方法可以定义?我发现这篇文章询问了类似的错误,但他的解决方案是"在C#中指定VARCHAR2的最大值为32767",但我不知道你是怎么做到的.
这是我的c#代码:
public string AutoPmtPost(string company_code, int customer_code)
{
string oradb = "Data Source=MySource; User Id=MyID; Password=MyPassword;";
OracleConnection conn = new OracleConnection(oradb);
conn.Open();
OracleCommand cmd = new OracleCommand("USP_JEFF_TEST", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("pin_company_code", OracleDbType.Varchar2, ParameterDirection.Input).Value = company_code;
cmd.Parameters.Add("pin_customer_code", OracleDbType.Int32, ParameterDirection.Input).Value = customer_code;
OracleParameter pout_addr_code = new OracleParameter("pout_addr_code", OracleDbType.Int32);
pout_addr_code.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pout_addr_code);
OracleParameter pout_descr = new OracleParameter("pout_descr", …Run Code Online (Sandbox Code Playgroud) 这个图表已经在我关注的博客上多次链接,我感觉自己就像一个没有得到它的人.所以,在这里走出困境并询问这个社区.请在这里的博客文章中解释这个网格.
应该使用什么客户端从ASP.net代码访问Oracle数据库(特别是调用存储过程)?我特指工业标准.你有什么提示/技巧/问题?
EDITED
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDbFilename=c:\users\name\documents\visual studio 2013\Projects\DBSample\DBSample\Database1.mdf");
SqlCommand cmd = new SqlCommand("Select * From Account", con);
SqlDataReader rd= cmd.ExecuteReader(); ;
Run Code Online (Sandbox Code Playgroud)
这是我的连接代码,database1.mdf但它无法正常工作.
我看到其他帖子说这应该已经有用了
我有login.php和mainpage.php文件,我想从中访问login.php用户的数据mainpage.php.
我应该使用require或include?如何连接这些文件?
require login.php;
include login.php;
Run Code Online (Sandbox Code Playgroud)