このコードはランタイム エラーを生成します。
struct MyStruct {
public int ID;
public string Desc;
}
...
var q = db.MyTable.Select(t => new MyStruct { ID = t.ID, Desc = t.Desc });
構造体にパラメーターのないコンストラクターがないため、エラーが発生します。しかし、明示的なコンストラクターは使用できません。そのための SQL 変換がないためです。
私の最初の質問は、これがコンパイル時エラーを生成しない理由です。コンパイラMyStruct
は、それが構造体であり、この存在しないパラメーターなしのコンストラクターでオブジェクト初期化子を使用できないことを認識しています。
しかし、より重要な問題は、これは Linq2Entities の既知の制限であり、構造体ではなくクラスを使用しなければならないということですか?