1

私はエンティティフレームワークを使用し、以下のコードを持っています:

public class AdvPackageInfo
{
    private int PackageId;
    private string Caption;
    private int Duration;
    private int Count;
    private bool Enable;
    private float Price;
}


 AdvertismentAgancyEntities enn = new AdvertismentAgancyEntities();

 List<AdvPackageInfo> lst = (from s in enn.Tbl_AdvPackage select new AdvPackageInfo { }).ToList();

    repeater1.DataSource = lst;
    repeater1.DataBind();

しかし、それは1回だけ機能し、私のページが2回目に読み込まれると、実行に失敗し、NullReferenceExceptionが発生します...!!

このページによると:http: //connect.microsoft.com/VisualStudio/feedback/details/663200/linq-to-entities-throws-nullreferenceexception-when-the-output-attribute-set-is-empty
それはドットネットフレームワークです問題。

私もこのコードを試してください:

var q = (enn.AdvPackage の s から s を選択).toList();

しかし、それも機能しません。

リストに対してlinqを選択させるより良い方法はありますか????

4

1 に答える 1

3

この行の代わりに:

List<AdvPackageInfo> lst = 
    (from s in enn.Tbl_AdvPackage select new AdvPackageInfo { }).ToList();

あなたはこれを行うことができます:

var lst = new List<AdvPackageInfo>();
for (int i = 0; i < enn.Tbl_AdvPackage.Count(); i++)
    lst.Add(new AdvPackageInfo());

(MS Connect ページで提案されている回避策は間違っていることに注意してください。使用すると、単一のオブジェクトEnumerable.Repeatへの参照でいっぱいのリストが作成されます)


以下のコメントごとに更新: データグリッドをロードしようとしているだけの場合は、次のようにリストを取得するだけです:

var lst = enn.Tbl_AdvPackage.ToList();
于 2013-01-19T11:38:36.777 に答える