我写了一个定义查询
<EntitySet Name="EntityFramework" EntityType="SEOAnalysisModel.Store.EntityFramework">
<DefiningQuery>
SELECT Keyword, ResultHead ,Year from SeoAnalysis where Year = 2005
</DefiningQuery>
</EntitySet>
自定义实体的实体类型
<EntityType Name="EntityFramework">
<Key>
<PropertyRef Name="Year" />
</Key>
<Property Name="Year" Nullable="false" Type="int" />
<Property Name="Keyword" Nullable="false" MaxLength="1000" Type="varchar" />
<Property Name="ResultHead" Nullable="false" MaxLength="2000" Type="varchar" />
</EntityType>
但是当我调用存储过程时,它只返回列的一个值
// Stored procedure
public void SelectValue() {
using (MyConnection ctx = new MyConnection()) {
foreach (var p in ctx.EntityFramework(2005)) {
Response.Write(p.Keyword);
}
}
}
此列值重复。
现在我如何获得所有列值?
实际上我的关键字重复性相同。
如果我有像Apple这样的关键字,那么这个关键字会重复,直到循环运行。
答案 0 :(得分:1)
您已将Year标记为该实体的关键字。键必须在定义查询中的所有记录中唯一,否则它不是键。如果密钥不是唯一的,EF将完全按照您的方式执行 - 它将仅将第一条记录实现为实体,并将其用于所有其他记录。 EF使用密钥来识别实体 - 如果您获得具有相同密钥值的两条记录,则EF认为它是同一个实体!