相关疑难解决方法(0)

Linq to SQL是不是错过了这一点?ORM-mappers(SubSonic等)不是次优解决方案吗?

我希望社区对我对Linq to Sql和其他ORM映射器的一些看法有所了解.

我喜欢Linq to Sql以及在本机开发语言中表达数据访问逻辑(或一般CRUD操作)的想法,而不是必须处理C#和SQL之间的"阻抗不匹配".例如,要返回与业务层的EventDataSource兼容的Event实例列表,我们使用:

return db.Events.Select(c => new EventData() { EventID = c.EventID, Title = c.Title })
Run Code Online (Sandbox Code Playgroud)

如果我使用旧的SQL-to-C#构造实现它,我必须创建一个Command类,添加EventID参数(使用字符串来描述"@EventID"参数),将SQL查询字符串添加到命令类,执行命令,然后使用(cast-type)nwReader ["FieldName"]拉取每个返回的字段值,并将其分配给我创建的EventData类实例的成员(yuck).

所以,就是人们喜欢Linq/SubSonic /等的原因.并且我同意.

然而,从更大的角度来看,我看到了一些错误的东西.我的感觉是,微软也看到了一些错误,这就是为什么他们将Linq杀死为SQL并试图将人们转移到Linq to Entities.只是,我认为微软正在加倍打赌.

那么,有什么不对?

问题是有架构的宇航员,特别是在微软,他们看着Linq到Sql,并意识到它不是一个真正的数据管理工具:在C#中还有许多你不能轻易做到的事情,他们的目标是修复它. 你看到这体现在Linq to Entities背后的野心,关于Linq 的革命本质的博客文章甚至是LinqPad的挑战.

而这个问题在于,它假定SQL的问题.也就是说,为了减轻轻微的不适(SQL和C#之间的阻抗不匹配),当创可贴(Linq to SQL或类似的东西)做得很好时,微软提出了相当于太空服(完全隔离).

据我所知,开发人员非常聪明,可以掌握关系模型,然后在开发工作中智能地应用它.事实上,我会更进一步说Linq to SQL,SubSonic等已经过于复杂:学习曲线与掌握SQL本身并没有太大的不同.因为,在可预见的未来,开发人员必须掌握SQL和关系模型,我们现在面临学习两种查询/ CRUD语言的问题.更糟糕的是,Linq通常很难测试(你没有查询窗口),从我们正在做的实际工作中删除了一层(它生成了SQL),并且对于像SQL结构这样的SQL结构具有非常笨拙的支持(最好)日期处理(例如DateDiff),"拥有"甚至"分组依据".

有什么选择?就个人而言,我不需要像Linq to Entities那样的数据访问的不同模型.我更喜欢在Visual Studio中弹出一个窗口,输入并验证我的SQL,然后按一个按钮生成或补充一个C#类来封装调用.既然你已经知道了SQL,你不想只输入这样的东西:

Select EventID, Title From Events Where Location=@Location
Run Code Online (Sandbox Code Playgroud)

并最终得到一个EventData类,A)包含EventID和Title字段作为属性,B)有一个工厂方法,它将一个'Location'字符串作为参数,并生成一个List <EventData>?你必须仔细考虑对象模型(上面的例子显然没有解决这个问题),但仍然使用SQL同时消除阻抗不匹配的基本方法对我很有吸引力.

问题是:我错了吗?Microsoft是否应该重写SQL基础结构,以便您不必再学习SQL /关系数据管理? 他们可以用这种方式重写SQL基础结构吗?或者你认为在SQL之上的一个非常薄的层来消除设置参数和访问数据字段的痛苦是足够的吗?

更新我想推广到顶部的两个链接,因为我认为它们捕获了我所追求的重要方面.首先,CodeMonkey指出了一篇题为"计算机科学的越南" …

sql linq-to-entities linq-to-sql

68
推荐指数
11
解决办法
5599
查看次数

asp.net c#MVC:如何在没有ViewState的情况下生活?

我只是想将WebForms转换为MVC:

在.net MVC中,哪些概念使ViewState成为不需要的东西?

如果表格在iteself上回发等(即回发)?page/usercontrol如何保持其状态?

人们在维持某种状态而不采用会话状态方面有什么技巧?

当然,完全无国籍的环境不存在?

c# viewstate asp.net-mvc

52
推荐指数
3
解决办法
4万
查看次数

我们讨厌经典asp的东西,但今天仍然存在于webforms中

我正在研究我的团队从webforms转移到MVC的原因列表,我认为一个好的起点是展示"为什么我们应该迁移",其中包括经典的asp和webforms都有的共同点.

如:

通心粉代码(SRP违规的)

传统的ASP -每个.asp文件感觉就像泥的大球
Web表单 -泥的这个大球从视图中臭名昭著的"代码隐藏"去

请记住,我的开发人员不是实现类似MVP的类型,而不是被推送,这是我喜欢MVC的原因之一(尽管保持控制器很薄将是一种学习体验)

更新 我知道您可以在任何平台上创建任何语言的混乱.我也知道MVC无法解决这个问题.我也意识到需要做一些真正的指导才能让团队写一个烂摊子来理解为什么这很难维护.但我觉得这个机会让我能够表达对SOC /责任驱动设计/可测试性等的需求.

关于使用webforms编写更易维护的软件:根据我在webforms中实现MVP等表示模式以尊重SRP /增加可维护性/启用单元测试等的经验比开箱即用的MVC要多得多(并且你得到相同的结果) ).它是否有效 - 是的,过去我采用这种方法取得了成功.但是,如果我能够利用更加自然的方法来进行平台上的Web开发,我会的.

我一直在寻找有人指出平均9-5开发人员"想要"在他们编写经典asp之后远离的事情,但是在他们进入we​​bforms后从未完成过.(再一次 - 我工作的大多数开发人员只是把他们在经典asp中抱怨的混乱局面转移到后面的代码中,并且"认为"这是朝着正确方向迈出的一步).

asp.net asp.net-mvc webforms asp-classic

10
推荐指数
3
解决办法
510
查看次数

MVC - 它只是一个3层模型吗?

刚开始研究mvc,我还不确定是否已经掌握了它.从我收集的内容看来,它似乎是一个3层解决方案的实现,即Model对应于DAL,Controller对应于业务逻辑层,View对应于表示层.

我离开基地吗?

asp.net-mvc 3-tier separation-of-concerns

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

为什么要使用C#代码内联?

我曾在接受采访时被问过"在aspx页面中使用C#代码内联的原因是什么".我无法回答,所以我很好奇.为什么要这样做而不是使用代码?有技术原因吗?

c# asp.net

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