0

助けが必要です...

手動で作成したエンティティがあります。

public class Project()
{
 public Project Data {get;set;}
 public string ProjectID { get; set; }
 public string AreaID { get; set; }
 public string Country { get; set; }
}

ここで、プロパティ「Project」はSQLmetalによって作成されたテーブルです。

また、SQLmetalを使用してクラスを作成しましたが、独自のエンティティがあればいいのですが。今、私はコンストラクターでそれらの間を解析しようとしています:

public Project()
{
 ProjectID = Data.ProjectID;
 AreaID = Data.AreaID;
 Country = Data.Country;
}

しかし、私が使用するとき

projects.Select(p => new Project { Data = p });

コンストラクターのDataプロパティがnullです。

なぜですか?そして、どうすればこれをより良い方法で解決できますか?

4

1 に答える 1

0

はい、初期化子のため

var x = new Project { Data = p };

と同等です

var x = new Project();
x.Data = p;

Dataプロパティは、コンストラクターの後に設定されます。

Data をパラメーターとして受け取るコンストラクターを作成することで解決できます

public Project(Data data)
{
    this.Data = Data;
    ProjectID = Data.ProjectID;
    AreaID = Data.AreaID;
    Country = Data.Country;
}

そしてコンストラクターを呼び出します

projects.Select(p => new Project(p));
于 2012-11-05T09:40:02.130 に答える