1

定義クエリを書きました

 <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>

しかし、ストアドプロシージャを呼び出すと、列の値が1つだけ返されます。

// Stored procedure
public void SelectValue() {
    using (MyConnection ctx = new MyConnection()) {
        foreach (var p in ctx.EntityFramework(2005)) {
            Response.Write(p.Keyword);
        }
    }
}

そして、この列の値は繰り返しです。

では、どうすればすべての列の値を取得できますか?

実際、同じキーワードが繰り返されています。

Appleのようなキーワードがある場合、このキーワードはループが実行されるまで繰り返されます。

4

1 に答える 1

1

エンティティのキ​​ーとして年をマークしました。キーは、定義クエリ内のすべてのレコード間で一意である必要があります。そうでない場合、キーではありません。キーが一意でない場合、EF は取得したことを正確に実行します。最初のレコードのみをエンティティに実体化し、それを他のすべてのレコードにも使用します。EF はキーを使用してエンティティを識別します。同じキー値を持つ 2 つのレコードを取得すると、EF はそれが同じエンティティであると認識します。

于 2012-07-13T11:30:59.857 に答える