关于实体框架与企业库的一般问题&其他一些人

时间:2010-12-04 22:52:53

标签: entity-framework c#-4.0 agile enterprise-library

简短的模糊,

我在.net中的技巧被称为“创新”,但我更希望它是典型的。基本上,我需要一位导师。我拥有域名codeologist.com,我将不辜负这个名字,但为了做到这一点,我需要一个导师&社区。

问题:

  1. 实体框架 - 我想这是一个强大的框架,它映射工厂中的对象,同时保留系统内对象的完整性和状态。至少,这就是我听过的播客大约15分钟时所能听到的。 RTFM我知道,但这是一个正确的一般评估?

  2. 企业图书馆 - 杀手。至少使用大多数块作为示例应用程序。

  3. 领域驱动设计 - 从ERD / ORM的思考到域驱动设计有哪些技巧?优点与缺点?

  4. Agile vs. SCRUM - 真的有区别吗?

  5. 单元测试 - 我想到的最后一件事。无法正确获得自动化web ui测试设置,还需要有关VSS 2005存储库中的NAnt / MSBuild脚本的帮助。源代码中的完整示例非常好,可能包括调度。

  6. 裸露的基本TSQL - 什么被认为是企业发展的最低专业级TSQL语句?像ROWCOUNT,TRANSACTION,ROLLBACK,流程控制语句,内联sql& CRUD方法的安全问题。

  7. 可以想象整合MVC2 / 3,实体框架,企业库和SilverLight Web前端?甚至可能是Sharepoint?

  8. 我问了一个我遇到过的人,我应该什么时候使用Linq,他的回答是“总是使用武力”。

  9. 在学习新语言时,您会编写哪些游戏/应用程序?那些即将编码的人有哪些好的练习? (我们向你致敬!)

  10. 您会推荐哪些书籍用于通用编程理论,企业架构和业务分析?

  11. 好吧,可能没有人会回应,但这些都是我内心深处的问题而且我必须得到所有这些。

    极客生活。

2 个答案:

答案 0 :(得分:5)

好的,我们来看看。

1)实体框架 - 它主要是一个ORM(对象关系映射器)。 EF的想法实际上比这更有野心;真正的目标是为各种数据(即EDM)创建超级棒的建模框架,然后提供实现和支持该模型(EF)的软件。但实际上,它是一个ORM。

2)嗯,这里真的有问题吗?

3)跑步,不要走路,买Eric Evan's Domain Driven Design。这本书定义了今天每个人都使用的DDD词汇。想知道存储库到底是什么?它在这里。

4)见到了。敏捷是Agile Manifesto中体现的思想。这是基本原则。 SCRUM是符合这些原则的特定方法(井,方法框架)。有很多敏捷方法(极限编程和Crystal Clear是我头脑中的两个例子),但它们都有相同的基本原则。

5)嗯,这应该是你想到的第一件事,但你应该做的是测试驱动设计,而不是单元测试。 TDD是一项设计/开发活动,单元测试是一项测试活动。 Web UI测试是一种痛苦,被授予。虽然你的问题有点模糊,看起来像是多部分。您可能希望将此问题拆分为单独的,更具体的问题。

6)我不是一个真正的SQL人,但我已经完成了很多基础知识 - SELECT对于初学者来说非常复杂。虽然我认为如果你在TSQL sprocs中需要条件逻辑或循环,那么事情就变得非常糟糕,非常错误。你最好真正理解这个理论 - 关系模型,正规形式,各种数据类型以及它们的行为方式。

7)是的,对于大多数人来说。每个人在软件堆栈中扮演不同的角色。假设您正在做一个RIA风格的客户端,您将在浏览器中运行提供UI的silverlight应用程序,并通过MVC站点回复到Web服务器。 Entlib在实现该MVC应用程序时很有用。如果您使用的是Silverlight,则最有可能使用EF进行数据访问。您还可以使用它来访问MVC应用程序内的数据库。 Sharepoint可能有点问题 - 它也是一个Web服务器的东西,所以你可以认为它是MVC应用程序的竞争对手。但您也可以将其用作数据存储。

8)LINQ摇滚。对于管理数据序列的某些问题,这是一种不同的思考方式。我喜欢它的是它非常可组合 - 你可以通过多种方式对数据进行过滤,转换和操作,并传递这些东西,并沿途进行更多的过滤/转换,并将所有插槽无缝地组合在一起。此外,实现LINQ所需的语言功能为C#/ VB.NET带来了一大堆新功能,这真的很酷。

9)Hello world总是很有用,只是为了确保你的编辑器 - 编译器 - 调试器工具链已经确定并正常工作。在那之后,我倾向于潜入我想的任何事情。当我第一次尝试Silverlight时,我做了一个小游戏。我可以做一个小解析器。或者只是尝试在屏幕上抛出一些窗口。我没有标准的新项目。

10)同意设计模式和POEAA的建议。我还强烈推荐Hunt和Thomas的The Pragmatic Programmer。它不是关于编程理论,而是关于构建软件的工艺。

答案 1 :(得分:1)

我无法回答你所有的问题,但我会对其中几个问题进行解答

  1. (问题1)基本上您的评估听起来是正确的。也可以说EF'抽象出'将数据持久化到持久性(通常是磁盘驱动器)存储所需的SQL。

  2. (问题7)是的。但是,根据我的经验,许多(如果不是大多数)软件开发人员不能或不愿意同时处理这么多不同的技术。平均Stack Overflow成员不会受到这种特殊疾病的影响。

  3. (问题8)那家伙是对的。 LINQ岩石。每次使用LINQ语句替换foreach循环时,代码都易于阅读和维护。记住LINQ(Lambdas)不仅可以用于查询数据库。用于对集合进行排序的LINQ语法就像在SQL语句中进行排序一样简单,但具有能够在内存中进行排序的附加优势。完全学习LINQ,这是你的朋友。

  4. (问题9)我经常潜入一个真正的工作项目。然后在我做了几件事之后重构了。最好的学习来自于做。你从错误中学到了更多,找到了问题,并且比我认识的任何其他方法都做得更好。

  5. (问题10)有两本书已经有一段时间了,但仍然很重要  可重用面向对象软件的设计模式元素
          这本书通常被称为“四人帮”或GOF书  和
     企业应用程序架构的模式作者:Martin Fowler