2017-09-08 11 views
2

複雑な型でOrderByDescendingまたはWhereの式を実行しようとすると、Entity FrameworkがNotSupportedExceptionをスローする問題が発生しています。私は何か間違っているのかどうかはわかりませんが、これはこの機能が存在しないことは非常に驚くべきことです。Entity Framework複雑な型のプロパティに対するクエリ

例:

のは、私は、エンティティは、データベース内の人のアドレスを構成するフィールドのセットを持っている人と呼ばれる持っていると言います。私は

var city = person.Address.City; 

マッピングを行うことができるように私のエンティティモデルでは、私は複雑なタイプとして、これらのフィールドをモデル化するだろう、これは私が複合型の外のプロパティに対するLINQクエリを実行するとき、私は適切な取得、罰金だと結果

ファイン例:

var people = (from person in Context.People 
       where person.LastName == "Smith" 
       select person).ToList(); 

問題例:

var people = (from person in Context.People 
       where person.Address.City == "Cleveland" 
       select person).ToList(); 

これは、次のエラーでNotSupportedExceptionをスロー:再び

ComplexTypes The specified type member 'Address' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

、メッセージは、それが複雑な型を使用する能力を制限するようにそれはそうと、この機能が存在しないことは明らかではなく、非常に驚​​くべきことです。任意のアイデアや回避策?

答えて

2

私はこの問題を一度も持ちました。

Person.AddressがSettableであることを確認してください。これにより問題が発生します。楽しいですか?

public Address Address { get; } = new Address(); 

これで修正されます。

public Address Address { get; set; } = new Address(); 
+0

うわー、それでした。ありがとうございました!なぜ私はこれがサポートされているオンラインの例を見たのですが、NotSupportExceptionが私を投げていたのは理にかなっています。 – Scott

関連する問題