OData でNotMappedプロパティを使用する方法を理解しようとしています。
私はこのユーザーモデルを持っています:
[DataContract]
public class User
{
[DataMember]
public long Id { get; set; }
[DataMember]
public virtual InstagramUser InstagramUser { get; set; }
[DataMember]
public virtual FacebookUser FacebookUser { get; set; }
[NotMapped]
public string InstagramID { get; set;
}
そして、ユーザーコントローラーにこのGetAll() メソッドがあります
public IQueryable<User> GetAllUsers()
{
_repository = new UserRepository();
return _repository.GetAll().AsQueryable();
}
およびユーザーリポジトリのこのGetAll() 関数
public IQueryable<User> GetAll()
{
InstaStoryDB db = new InstaStoryDB();
var ret = db.Users.Include("InstagramUser").Include("FacebookUser").AsQueryable();
foreach(User user in ret)
{
user.InstagramID = user.InstagramUser.InstagramID; //<-- I'm adding here the value to the property
}
return ret;
}
これがInstagramUser モデルです
[DataContract]
public class InstagramUser
{
[DataMember]
public long UserId { get; set; }
[DataMember]
public string InstagramID { get; set;
}
すべての作業は良好です。
User モデルに変更を加え、InstagramUser
を含むを追加したInstagramID
ので、[NotMapped] 属性を追加して、DBの User テーブルから InstagramID を削除しました。これは、InstagramUser に既に InstagramID が含まれているためです。
次のように Odata を使用しようとすると、 localhost:555/api/users/?$filter=InstagramID eq '456456546' 失敗し、InstagramID プロパティが存在しないというエラーが返されます。
NotMappedプロパティの Odataでフィルターを使用するにはどうすればよいですか?