2010-12-10 73 views
1

我想要使用Silverlight 4,业务应用程序模板,WCF RIA Services和Entity Framework 4设计CRUD商业应用程序的建议。该应用程序跟踪对材料样本执行的实验室测试结果。它取代了一个(难以维护)现有的Web应用程序。实验室测试结果存储在由数百个字段组成的两个“SampleData”表中。这些表格具有一对一的关系。我使用实体框架的Table Per Type Inheritance将这两个表合并成一个表,我很满意。注意:我决定不更改数据库设计以避免破坏现有的应用程序,but it was considered.如何划分一个实体与数百个字段?

我的两难困境是如何分解这个巨大的表。每条记录代表一个被测试的材料样本。字段的逻辑分组是通过实验室测试。我想象我的UI有多个标签或单独的页面 - 每个测试一个。现在的问题是,我吸入所有的字段,但只在分页的DataGrid中显示一些字段,并且有明显的延迟。不是一个巨大的实体,它可能是很好的,有几个“实验室测试”实体(每个都代表一种测试类型),它们是我的一个巨型TPT继承表的子集。我将如何做到这一点?基本SampleData表/实体包含标题字段以及多个子测试结果字段。第二个派生表/实体包含更多通过SampleID链接到基础的测试结果字段。如果分裂,我需要维护每个实验室测试实体的标题信息。

我愿意用一个巨大的表/实体坚持(尽管有轻微的性能损失)。不过,我想知道用这个实体创建我的UI的最佳方式。 DataForm可以选项卡吗?如果我制作带有实验室测试链接的仪表板,我应该如何将标题信息与每个测试页面保持同步?

我知道这是一个广泛的问题。我希望能够获得有关良好设计路径的建议,这将允许我在添加新实验室测试(制作更大的实体)时增加应用程序。我希望找到一条能够简化维护并利用微软正在推广的RAD体验的途径。

提前致谢!

+0

如果你不介意我问,你为什么觉得web应用程序是很难维持的?我在Silverlight的/ RIA服务切换到ASP.NET MVC,因为我已经找到了相反的过程:SL/RIA难以维持和发展缓慢的进展。我发现这一切都非常重量级和不灵活。 – 2010-12-17 00:10:12

+0

应用程序的一半是在Asp 1.1中使用古树视图和选项卡控件。其中一个标签有一个框架,其中包含一个完整的Asp 2.0应用程序。需要进行严重的重构(并且我已经开始)。多维数组包含数据库字段名称和由幻数索引号标识的相应文本框对象。数据库调用主要是循环来填充数组或执行CRUD。被遗弃的代码丢弃了应用程序。变量是3或4个字母的首字母缩略词,因为谁知道什么。通常,应用程序将无法编译,并且会丢失时间。原来的开发人员离开了公司,我这个新人不得不应对这个泥潭。 – DeveloperDan 2010-12-17 13:25:22

回答

0

我回答(并接受)我自己的问题,以提高我的堆栈溢出接受率,但我的“答案”是,我没有发现任何答案。因为我不得不继续这个项目,所以我继续使用一个巨大的实体。我也感动Silverlight的路程,转身项目到一个WPF应用程序由于各种斗争的Silverlight等固有异步数据访问。

0

我扫描后讨论数据库设计和必须说,根据你说的是什么,事实上,你已经得到了用户的要求,更多的测试(重复值),我希望你能重新考虑分贝重新设计。您可以创建一个平面视图来模拟现有的平面样本数据表并使用它来最小化现有应用程序中的损坏。

但是你已经做出决定,所以关于扭转情况怎么样?将代码添加到从其平面布局转换数据的域服务中,而不是修复数据库,而忽略所有空值。

一个想法是写一个观点,即未展平的数据,并留出空没有测试的情况。查询会引起人们的注意(我可能会为此而惹火),因为它看起来很讨厌,但实际上DBMS在优化和执行查询方面做得很好(无论如何都在Oracle中)。我从哪里programmer_exp_flat是csharp_yrs不为空 工会 选择programmer_id有做一个视图类似::

了很大的成效创建视图 programmer_exp_unflat为( 选择programmer_id, 'C#',csharp_yrs,公司的Java ”,java_yrs从programmer_exp_flat其中java_yrs不为空 工会 选择programmer_id, 'Cobol语言',cobol_yrs从programmer_exp_flat其中cobol_yrs不为空 。 重复xx倍)从双重

无论你如何看待它,它都是倒退和丑陋的,但它将你的结果集减少到最低限度,并且不需要将事情划分到不同的类别中。新的测试值需要修改视图,并且根据UI灵活性和业务规则,可能不需要任何更改。

它使编码在UI更加困难,因为它会一直跟在第一时间正确的数据库设计,但你的查询结果减少到只有已经完成了测试。如果你的用户是灵活的用户界面可以被设计为显示测试结果作为一个列表显示小菜一碟。你目前的设计几乎迫使你用每一个新的测试来修改UI和数据库。

这些都是使成为开发这么多的乐趣类型的挑战 - 为什么都可以建在五分钟内营销噱头样品CRUD应用程序在现实世界一文不值。

+0

我喜欢你的平坦视野。不幸的是,我不能整齐地把这些专栏分成几个类别,比如YearsExperience。相反,我的专栏跟踪了不同的测量结果,如温度,重量,速度,厚度等。感谢提醒我,成为一名开发人员非常有趣。有时我会忘记这一点。 – DeveloperDan 2010-12-17 14:56:48

相关问题