SilverLight: KeyAttribute设置不当导致重复数据
2011-07-06 16:48
465 查看
在使用SilverLight进行开发时,结合WCF Ria进行数据库操作,大大提高了开发效率(至少对于本人数据库结构比较简单的情况来说)。当中免不了进行多表的联合查询,那么VS自动生成的代码就满足不了需求,于是定义了如下的类型
这是什么原因造成的呢?第一感觉是在使用Linq进行查询的时候,使用了join,导致了查询结果重复(本人数据库、linq刚刚入门)。但是google了半天,发现网上也大体是这么做的。查询代码如下:
那会是什么情况呢?抱着试试的态度,在StockInfo类添加一个属性EpcId(这个值在数据库中是唯一的,在查询结果中也是唯一的),并设置KeyAttribute,同时配置为不显示。然后在查询代码中给EpcId赋值
问题是解决了,但是根本原因还不是很清楚,感觉微软使得编程原来越简单,或者说傻(好事,坏事?),不知道隐藏的代码干了什么事情。
public class StockInfo { [Key] [DisplayAttribute(Name = "类别", Order = 0)] public String CategoryName { get; set; } [DisplayAttribute(Name = "颜色", Order = 1)] public String ColorName { get; set; } [DisplayAttribute(Name = "里料", Order = 2)] public String InsideMaterialName { get; set; } [DisplayAttribute(Name = "面料", Order = 3)] public String OutsideMaterialName { get; set; } [DisplayAttribute(Name = "尺寸", Order = 4)] public String SizeName { get; set; } [DisplayAttribute(Name = "款式", Order = 5)] public String StyleName { get; set; } [DisplayAttribute(Name = "当前库存", Order = 6)] public int StockCount { get; set; } }结果在Datagrid里面显示效果如下,有部分行重复显示,与实际情况不符。
这是什么原因造成的呢?第一感觉是在使用Linq进行查询的时候,使用了join,导致了查询结果重复(本人数据库、linq刚刚入门)。但是google了半天,发现网上也大体是这么做的。查询代码如下:
return from stock in context.Stock join epc in context.Epc on stock.EpcId equals epc.EpcId join category in context.Category on epc.CategoryId equals category.CategoryId join color in context.Color on epc.ColorId equals color.ColorId join insideMaterial in context.InsideMaterial on epc.InsideMaterialId equals insideMaterial.InsideMaterialId join outsideMaterial in context.OutsideMaterial on epc.OutsideMaterialId equals outsideMaterial.OutsideMaterialId join size in context.Size on epc.SizeId equals size.SizeId join style in context.Style on epc.StyleId equals style.StyleId select new StockInfo() { CategoryName = category.CategoryName, ColorName = color.ColorName, InsideMaterialName = insideMaterial.InsideMaterialName, OutsideMaterialName = outsideMaterial.OutsideMaterialName, SizeName = size.SizeName, StyleName = style.StyleName, StockCount = stock.StockCount };
那会是什么情况呢?抱着试试的态度,在StockInfo类添加一个属性EpcId(这个值在数据库中是唯一的,在查询结果中也是唯一的),并设置KeyAttribute,同时配置为不显示。然后在查询代码中给EpcId赋值
[Key] [DisplayAttribute(AutoGenerateField = false)] public int EpcId { get; set; }
结果如何呢?如图select new StockInfo() { EpcId = epc.EpcId, CategoryName = category.CategoryName, ColorName = color.ColorName, InsideMaterialName = insideMaterial.InsideMaterialName, OutsideMaterialName = outsideMaterial.OutsideMaterialName, SizeName = size.SizeName, StyleName = style.StyleName, StockCount = stock.StockCount };
问题是解决了,但是根本原因还不是很清楚,感觉微软使得编程原来越简单,或者说傻(好事,坏事?),不知道隐藏的代码干了什么事情。
相关文章推荐
- 【DataGuard】由于备库参数设置不当导致数据文件无法添加的故障分析
- Java从文本文件中读取数据,导致Map中Key值重复
- sql,key id不唯一,导致出现重复数据
- easyUI draggable插件使用不当,导致拖动div内部文本框无法输入;设置echarts数据为空时就显示空白,不要动画和文字
- 维度用法设置不当导致的数据无法正确聚合的问题及解决
- 数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
- js中防止连续点击按钮导致多次重复提交数据的方法
- 数据类型转换不当导致数据库不能正确插入数据问题
- tomcat发布两个项目报错webAppKey重复设置
- MySQL数据库参数设置不当导致应用不能连接问题
- Linux下内核参数设置不当导致建库内存溢出
- 【iOS开发-60】案例学习:多组数据的tableView设置、增加右侧组索引、多层数据模型设置以及valueForKeyPath
- ResultSet参数设置不当导致OOM
- form 的 encoding设置不当导致在jsp中使用request.getParametre(paraName)无法获取表单提交的值
- d3中x轴数据名称重复导致缺失的问题
- 因组策略设置不当导致win7任务管理器停止运行的解决方法
- 并发数据库事务缺锁导致的数据不一致情况:丢失更新,脏读,不可重复读,幻读
- MySQL数据库参数设置不当导致应用不能连接问题