gpt4 book ai didi

asp.net-mvc - 将 NotMapped 属性值与 Odata $filter 函数结合使用

转载 作者:行者123 更新时间:2023-12-02 04:23:56 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何将 NotMapped 属性与 OData 结合使用

我有这个用户模型:

[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;
}

我在用户 Controller 中有这个 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;
}

这就是Instagram用户模型

[DataContract]
public class InstagramUser
{
[DataMember]
public long UserId { get; set; }
[DataMember]
public string InstagramID { get; set;
}

一切正常。

我对 User 模型进行了更改,并添加了包含 InstagramIDInstagramUser,因此我添加了 [NotMapped] 属性以从 User 表中删除 InstagramID DB,因为 InstagramUser 已经包含 InstagramID。

每当我尝试像这样使用 Odata 时:本地主机:555/api/users/?$filter=InstagramID eq '456456546'失败并返回 InstagramID 属性不存在的错误。

如何在 NotMapped 属性上使用 Odata 过滤器?

最佳答案

这对我在 Web API 中使用 OData v4 有用:

var t = modelBuilder.StructuralTypes.First(x => x.ClrType == typeof(User));
t.AddProperty(typeof(User).GetProperty("InstagramID"));

关于asp.net-mvc - 将 NotMapped 属性值与 Odata $filter 函数结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14374284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com