1
이 코드는 런타임 오류가 발생 구조체에 대한 매개 변수가없는 생성자가 없기 때문에Linq2Entities 쿼리에서 구조체를 반환 할 수 있습니까?
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의 알려진 제한 사항이며 구조체가 아닌 클래스를 사용해야한다는 것입니다.
귀하의 구조체는 암시 적/기본 매개 변수가없는 생성자를 가지고처럼 보이는, 왜 이러한 예외가 발생 될 수 있을까? –