Silverlight LINQ to SQL:一个大数据类,还是几个小数据类?

时间:2011-02-11 23:40:36

标签: silverlight linq-to-sql

我是Silverlight的新手,但是直接被抛入战斗 - 我认为这是学习的好方法:o)

无论如何,我正在研究的webapp有一个相对复杂的数据库结构,它代表了彼此链接的各种对象类型,我想知道两件事:

1-数据类的推荐方法是什么?只有一个大数据类,或者尝试将它分成几个较小的数据类,请记住它们需要相互引用?   2-如果建议的方法是有多个数据类,那么如何定义数据间间引用?

我问,因为我做了一个小测试。在我的数据库中(这里简化,真实模型更复杂,但这并不重要),我有一个表“订单”和一个表“参数”。 “订单”在“参数”上有一个外键。我做的是创建2个数据类。 第一个, ParamClass ,我只删除了“参数”表,所以我可以有一个很好的“参数”类。然后我创建了一个简单的服务来添加基本的SELECT和INSERT功能 第二个, OrdersClass ,我删除了两个表,这样表之间的关系会自动创建一个“EntityRef< parameter>” “order”类中的变量。然后我删除了在OrdersClass数据类中自动创建的“parameters”类,因为该类已在ParamClass数据类中声明。我再次创建了一个小服务来测试它。

到目前为止一切顺利,它构建得很开心。问题是,当我尝试处理应用程序代码时,我为两个数据类添加了服务引用,但它不喜欢这样的事情:

OrdersServiceReference.order myOrder = new OrdersServiceReference.order();
myOrder.parameter = new ParamServiceReference.parameter();  //<-PROBLEM IS HERE

它表明它不能隐式地从类型'MytestDC.ParamServiceReference.parameter'转换为'MytestDC.OrdersServiceReference.parameter'

我是否需要从OrdersClass声明对ParamClass的某种引用,或者如何将一个引用到另一个? 这甚至是推荐和有效的方法吗? 由于它是一个团队项目,我最初想要分离数据类,以便一个成员可以轻松地检查它们(及其服务),而无需检查整个数据类。

任何帮助表示赞赏!

PS:使用Silverlight 4,以防重要

2 个答案:

答案 0 :(得分:1)

根据广泛接受的单一责任原则(SRP),一个班级应始终负责一项任务,一项任务

这几乎使你的“一大数据类”方法无效。

我总是会推荐更小,更易于管理的可以组合的部分,而不是一个可以完成所有事情的可怕的课程(除了咖啡咖啡)。

SRP的资源:

答案 1 :(得分:0)

好的,还有一些研究让我这样说:使用LINQtoSQL将类与关系模型分开并不简单。我最终切换到实体框架方法,它本身并不优雅地处理它(例如,参见herethere),但至少它解决了我使用LINQtoSQL的另一个主要问题。 还有其他ORM在这方面显然更有能力(NHibernate常常出现在建议中),不幸的是,我现在没有时间对它们进行调查,在如此紧迫的期限内。

至于引用,它很简单,将行改为:

myOrder.parameter = new OrderServiceReference.parameter();

即使我从该数据类中删除了声明。

希望这有助于某人!