这个问题就像一个游泳池.我们正在尝试使用LINQ to SQL等ORM来确定最佳结构.我们定义的归档是用于其他应用程序将通过直接引用DLL或通过Web服务访问的一种框架.我们有.NET应用程序和PHP应用程序.可能性是:多个数据上...
这个问题就像一个游泳池.我们正在尝试使用LINQ to SQL等ORM来确定最佳结构.我们定义的归档是用于其他应用程序将通过直接引用DLL或通过Web服务访问的一种框架.我们有.NET应用程序和PHP应用程序.
可能性是:
多个数据上下文:将数据库分成工作单元,并为每个工作单元创建单独的上下文.
优点:
>易于使用
>类将被分解为不同的名称空间
>维护较小的域
缺点:
>如果,对象必须重复
相关,创造维护地狱
>对象不能在上下文之间传递,从而需要在数据库上进行另一次命中
单一数据上下文:所有表,视图,过程都位于同一个巨大的上下文中.
优点:
>没有重复
>关系很容易管理,基本上LINQ负责处理它.
>更好的性能,更少的数据库命中率.
缺点:
>所有表都在相同的命名空间中,代码完成变得疯狂
>对设计师来说不是最好的(至少在VS2008上)
>不能选择保存什么,不保存什么.全部保存,或删除所有模式.
嗯,这是我想到的事情,所以如果有任何其他优点或缺点,请告诉我,我会将它们包括在帖子中.也选择你最好的一个.
谢谢大家
解决方法:
我理解你的疑虑.当我开始使用LinqToSql时,我也有同样的想法.为了帮助我找到更好的方法,我开始创建一个个人项目,在那里我可以毫无顾虑地毫无先决后地测试所有方法.
在这个练习中,我发现唯一一种上下文方法是最有用的.此解决方案似乎更易于维护,如果您需要重新创建域,您将只管理一个项目中的一个文件.
我在练习中意识到的其他方面是直接使用LinqToSql在组织方面效率不高.如果你有一个项目,团队将执行开发而不是只有一个人,你应该“屏蔽”LinqToSql.应该有一个“治安官”来处理域名,你也应该使用一些抽象机制来保护模型不被滥用(我实现了一个Repository模式,它运行良好,但你可以找到不同的方法).
我还遇到了在域内创建一些逻辑组的问题.我真正做的就是使用一些DDD(领域驱动设计)技术来创建所谓的聚合.聚合是域内实体的逻辑排列,其中您具有根实体(用作聚合器)以及它们之间相关的其他几个卫星实体.您可以在LinqToSql域中创建一些新实体.这些新实体将与数据库断开连接,并将作为聚合器.这种方法可以让您在域内创建“子域”,并帮助您获得更好的设计.
最后我意识到使用LinqToSql的最佳方法是将上下文视为简单的DAL.重用其域,带有一些扩展(我们可以使用T4来帮助我们创建代码),其中实体被转换为DTO(数据传输对象)以将数据暴露给其他层.
我正在发布(尚未完成)我在博客中练习的步骤:http://developmentnirvana.blogspot.com/
本文标题为:c# – LINQ to SQL体系结构.什么是最好的?
基础教程推荐
- WPF利用ValueConverter实现值转换器 2023-07-18
- C#简易人机对抗“石头剪刀布”游戏的实现 2023-06-05
- WPF程序将控件所呈现的内容保存成图像 2023-06-15
- Unity键盘WASD实现物体移动 2023-01-11
- c# 进程之间的线程同步 2023-03-14
- ZooKeeper 实现分布式锁的方法示例 2023-01-22
- C#多线程用法详解 2023-05-11
- C#实现复制数据库 C#将A数据库数据转到B数据库 2022-11-19
- C#中命名参数和可选参数 2023-06-04
- Unity调用打印机打印图片 2023-02-02