MVC4 とエンティティ フレームワークを使用しています。ApiController に UserController を呼び出して、プロパティに基づいてユーザーにクエリを実行したいと考えています。私の User エンティティには、名前、電話番号、住所 (複合型) などのプロパティがあり、このデータに基づいてユーザーを照会および取得できるはずです。しかし、ユーザーには、表示したくないパスワード、lastsync などのプロパティもあります。現在、解決策がありません。以下はユーザーを示していますが、すべてのエンティティと、表示したくないエンティティも含まれています。
public class UserController : BaseApiController
{
public IQueryable<User> Get()
{
// _db is my entity framework DbContext
return _db.Users;
}
}
「パブリックに」表示されるすべてのプロパティを ApiUser クラスに移動し、User を ApiUser から派生させると考えました。次に、私の考えは次のようにすることでした:
public class UserController : BaseApiController
{
public IQueryable<ApiUser> Get()
{
return _db.Users.AsQueryable<ApiUser>();
}
}
残念ながら、これは機能しません。次の例外が発生します。
[InvalidOperationException: The type Repository.User was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.]
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDelegatingEnumerable1.Write2_ApiUser(String n, String ns, ApiUser o, Boolean isNullable, Boolean needType) +171
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterDelegatingEnumerable1.Write3_ArrayOfApiUser(Object o) +297
必要なものをどのように達成できるか知っていますか?