C# 使用LINQ到SQL的.NET体系结构的最佳设计实践(需要DAL吗?我们真的可以采用POCOs设计模式吗?)
我一直在避免在.NETARCH/n层体系结构上写看起来像是另一个线程的东西,但请容忍我 一、 希望像其他人一样,在选择用于企业应用程序的体系结构时,考虑到当今的趋势和新出现的技术,我仍然没有100%满意或清楚地了解最佳方法 我想我正在征求广大社区对您在使用当今.NET技术的大多数方面构建企业应用程序时所选择的方向和体系结构实现的意见,以及您将采取的方向。我最好把我和我的问题说出来,否则就太模糊了;我想改进我的体系结构来改进,并且非常想听听大家对我即将编写的技术列表的看法 欢迎您提出任何和所有最佳实践和体系结构模式,如果您以前为类似类型的设置创建过解决方案,那么您可能遇到或克服了任何陷阱或警告 下面是我最新项目中采用的技术列表,是的,除了WPF,几乎所有的技术都采用了:)C# 使用LINQ到SQL的.NET体系结构的最佳设计实践(需要DAL吗?我们真的可以采用POCOs设计模式吗?),c#,.net,linq-to-sql,design-patterns,architecture,C#,.net,Linq To Sql,Design Patterns,Architecture,我一直在避免在.NETARCH/n层体系结构上写看起来像是另一个线程的东西,但请容忍我 一、 希望像其他人一样,在选择用于企业应用程序的体系结构时,考虑到当今的趋势和新出现的技术,我仍然没有100%满意或清楚地了解最佳方法 我想我正在征求广大社区对您在使用当今.NET技术的大多数方面构建企业应用程序时所选择的方向和体系结构实现的意见,以及您将采取的方向。我最好把我和我的问题说出来,否则就太模糊了;我想改进我的体系结构来改进,并且非常想听听大家对我即将编写的技术列表的看法 欢迎您提出任何和所有最佳
- 智能客户端(WinForms)
- 周转基金
- 由智能客户端使用
- ASP.NETMVC
- 管理工具
- 客户端工具
- LINQ到SQL
- 由WCF使用
- 使用ASP.NETMVC
- Microsoft SQL Server 2008
- 依赖注入-结构映射
- 异常管理-自定义
- 单元测试-MBUnit
- 如果使用LINQtoSQL,是否应该有一个自定义数据访问层,这是一个很大的疑问。我应该在我的服务/业务层中直接执行LINQ to SQL,还是在存储库方法中的DAL中执行LINQ to SQL?是否应该在每个存储库方法调用中创建数据库上下文的新实例(使用())?还是类构造函数中的一个/通过DI
- 您认为在使用LINQ to SQL时,我们真的可以使用POCO(普通的旧CLR对象)吗?我希望看到一些例子,因为我遇到了一些问题,这将是特别方便的WCF工作,因为我显然不能携带L2S的对象跨越电线
- 通过在视图中保留视图逻辑、控制器调用服务/业务方法,当然还有模型中的数据访问,创建ASP.NET MVC项目本身可以非常清楚地显示您应该采用的设计模式,但是对于较大的项目,尤其是共享数据访问的项目,您会放弃“模型”方面吗,您将采取什么方法获取数据
在DAL要点中添加了附加问题。/15:42 GMT+10当我看到Rob Connery的店面时,他似乎在使用POCOs和Linq来编写SQL;然而,他正在通过将Linq转换为SQL创建的实体转换为POCO(并返回),这对我来说似乎有点愚蠢——本质上我们用DAL来表示DAL 然而,这似乎是将POCOs与LINQtoSQL结合使用的唯一方法
我想说的是,您应该使用存储库模式,让它隐藏您的Linq到SQL层(或者您最终用于数据访问的任何层)。这并不意味着您不能在其他层中使用Linq,只需确保您的存储库返回IQueryable即可。回答您的问题:
- 我应该直接在我的服务/业务层中执行LINQ to SQL,还是在存储库方法中的DAL中执行LINQ to SQL?只有当数据库与业务对象一一对应时,LINQ to SQL才有意义。在大多数企业情况下,情况并非如此,这更合适
话虽如此,LINQ通常非常适合直接在您的业务层中使用,因为LINQ提供者(无论是LINQtoSQL还是其他)是您的DAL。LINQ的好处是,它允许您在业务层比
更灵活、更具表现力,但使LINQ和传统DAL代码都能工作的接近金属的代码被封装在远离您的地方,具有相同的积极效果DAL.GetBusinessEntityById(id)
- 当使用LINQ to SQL时,您认为我们真的可以使用POCO(普通的旧CLR对象)吗?如果没有关于LINQ to SQL的POCO问题的更多具体信息,很难说
- 您是否愿意放弃大型项目的“模型”方面一般来说,MVC模式比ASP.NET MVC的肤浅印象要广泛得多。根据定义,无论您选择使用什么连接到应用程序中的数据备份,都将成为您的模型。如果这是利用WCF或MQ连接到企业数据云,那么就这样吧
IQueryable
/Expression
。如果您这样做了,您的存储库就不再是一个黑盒子,也无法单独测试,因为它是cal一时兴起的