Entity framework 实体框架和使用定义查询的存储过程

Entity framework 实体框架和使用定义查询的存储过程,entity-framework,Entity Framework,我写了一个定义查询 <EntitySet Name="EntityFramework" EntityType="SEOAnalysisModel.Store.EntityFramework"> <DefiningQuery> SELECT Keyword, ResultHead ,Year from SeoAnalysis where Year = 2005 </DefiningQuery> </EntitySe

我写了一个定义查询

 <EntitySet Name="EntityFramework" EntityType="SEOAnalysisModel.Store.EntityFramework">
     <DefiningQuery>
         SELECT Keyword, ResultHead ,Year from SeoAnalysis where Year = 2005
     </DefiningQuery>
 </EntitySet>
这个列值是重复的

现在如何获取所有列的值

事实上,我得到了相同的关键字重复


如果我有像Apple这样的关键字,那么这个关键字会一直重复,直到循环运行。

您已经将年份标记为实体的关键字。键在定义查询中的所有记录中必须是唯一的,否则它不是键。如果密钥不是唯一的,EF将完全执行您得到的操作—它将仅将第一条记录具体化为实体,并将其用于所有其他记录。EF使用键标识实体-如果您得到两个具有相同键值的记录,EF相信它是同一实体

您已将年份标记为实体的键。键在定义查询中的所有记录中必须是唯一的,否则它不是键。如果密钥不是唯一的,EF将完全执行您得到的操作—它将仅将第一条记录具体化为实体,并将其用于所有其他记录。EF使用键标识实体-如果您得到两个具有相同键值的记录,EF相信它是同一实体

 <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);
        }
    }
}