我有一个简单的查询从SQL Server中的视图:
SELECT [PricePerM] FROM RealtyStatParent ORDER BY PricePerM
当我在SQL Management Studio中执行查询时,会得到正确的结果。这意味着我得到了2532行,从1.00开始到173543.6893结束。
当我使用实体框架从C#进行查询时,得到了相同的结果:
var justDecimals = context.RealtyStatParents .OrderBy(item => item.PricePerM) .Select(item => item.PricePerM) .ToArray();
到现在为止,没有什么特别的。但是我真正不明白的是以下查询。我先选择整行,然后选择价格(十进制)。
var entireRows = context.RealtyStatParents .OrderBy(item => item.PricePerM) .ToArray(); var decimalFromRows = entireRows .Select(item => item.PricePerM) .ToArray();
重复很多PricePerM值(值1或48),而不是实际值,并且结果集的顺序不正确。
EF设计器中行的定义很简单:
public partial class RealtyStatParent { public NullablePricePerM { get; set; } public int BusinessCategory { get; set; } public decimal obec_kod { get; set; } public Nullable ParentCategoryId { get; set; } }
更新
我相信这种奇怪的行为与Entity Framework返回不良数据有关,因为视图没有主键。EF决定将Entity Key设置在Column BusinessCategory和obec_kod上,二者组合在一起是唯一的。我希望我离我很近,但还不够。