gpt4 book ai didi

c# - Entity Framework ,查询中未映射属性

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:05 26 4
gpt4 key购买 nike

我正在创建一个实体模型,我想在其中放置一个未映射的属性。这些属性用于简化对关系值的访问。显示的模型只是一个简单的例子。 Example model

在名为 UserRole 的 users_roles 实体中,我想拥有 UserName 属性和 RoleName

public class UserRole 
{
public int Id { get; set; }
public int IdUser { get; set; }
public int IdRole { get; set; }

public User User { get; set; }
public Role Role { get; set; }

[NotMapped]
public string UserName
{
get { return User.Name; }
}
[NotMapped]
public string RoleName
{
get { return Role.Name; }
}
}

这对我来说对以后的过滤、数据绑定(bind)等很重要。我不坚持这样的解决方案。这只是第一个想法。

现在,如果我尝试通过 UserNameRoleName 过滤实体,我有一个异常(exception),因为 NotMapped 属性不存在于数据库。

第二件事是在 DbContext 处理后获取属性值。现在我正在使用 .Include() 方法(预加载),但是是否有可能以一种方式同时获得上述功能(filterint 等和预加载值)?

编辑 1:我正在使用 Code First 模型创建策略。编辑 2:好的,澄清一下,最基本的答案是创建一个这样的过滤器方法

public IQueryable<UserRole> Filter(IQueryable<UserRole> query, string userName, string roleName)
{
return query.Where(x => x.User.Name.Contains(userName) && x.Role.Name.Contains(roleName));
}

最佳答案

基本上,如果你会做类似的事情

Context.UserRole.Where(x=>x.UserName == "login")

正如您所描述的,您将有一个异常(exception)。您可以使用

Context.UserRole.Include(x=>x.User).Where(x=>x.User.Name == "login")

关于c# - Entity Framework ,查询中未映射属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32581589/

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