我正在从事一个拥有大约30个表和大约100个存储过程(MSSQL)的数据库的项目。
//“成语#1”用于我的项目公共静态DataSet GetSomeData(int a,int b) {返回SqlHelper.ExecuteDataSet(连接,“从tab1中选择x,y”,其中a=“+ a.ToString() +”和b=“+b.ToString()”};
然后,当从某个地方调用它时:
//“成语#2”变量ds = DAL.GetSomeData(123,456);var t= ds.Tables;var x= t.Rows;var y= t.Rows;
我坚信这个想法是非常糟糕的,但我不确定正确的方法是什么。我绝对相信,我希望看到的至少是类型化的对象而不是DataRows,以及这些对象的集合而不是DataTables。我也确信我不想自己实现所有这些东西。
公共抽象类PersonAccessor : DataAccessor { SqlText(@"SELECT * FROM Person FirstName = @firstName")公共抽象列表GetPersonListByFirstName(string @firstName);SprocName("sp_GetPersonListByLastName")公共抽象列表GetPersonListByLastName(string @lastName);.
虽然我不能称之为ORM,但这种方法是抽象的--足以让我想要它而不是现在的样子,但另一方面,它仍然相当low-level.
什么是正确的解决办法?优先事项是:
易于反映DB结构changes
int.Parse(row[0][3].ToString())发布于 2011-07-26 09:52:30
我建议您使用.NET ORM。您可以在这里了解关于选择ORM的更多信息:
NHibernate, Entity Framework, active records or linq2sql
使用ORM执行"SELECT * FROM Person WHERE = @ FirstName“不会显着地慢,而且您的开发速度可能会更快。
https://stackoverflow.com/questions/6821310
复制相似问题