我想确保在这里正确使用ABP。我有实体,其中包含许多用户的记录。我希望用户仅查看其记录。我一直在关注“任务列表”教程:Tutorial。一切都非常清晰,直到我想让用户记录仅对该用户可见。
是否有更直接的方法来执行此操作,以便在查询数据时不在Linq查询中指定UserId?或者,当我查询用户数据时,是否需要提供当前用户ID?
编辑:经过更多的试验之后,我意识到Thing实体具有CreatorUserId,可用于我的查询。将外键添加到AppThing for UserId是否转储?
这是我的事物实体,其中包含UserId的ForeignKey
[Table("AppThing")]
public class Thing : FullAuditedEntity
{
[Required]
public string Name { get; set; }
[ForeignKey(nameof(UserID))]
public User AssignedUser { get; set; } //returns null. IDK how to make this be ther User from UserID.
public long? UserID { get; set; }
public Thing()
{
CreationTime = Clock.Now;
}
public Thing(string name, long? userID = null)
: this()
{
Name = name;
UserID = userID;
}
}
这是我的ThingAppService,它为已登录的用户获取所有内容的列表。
public class ThingAppService : ThingAppServiceBase, IThingAppService
{
private readonly IRepository<Thing> _thingRepository;
public ThingAppService(IRepository<Thing> houseRepository)
{
_thingRepository = houseRepository;
}
public async Task<ListResultDto<ThingListDto>> GetAll(GetAllThingsInput input)
{
var things = await _thingRepository
.GetAll()
.Where(q=>q.UserID == AbpSession.UserId) //is this always required when segregating users data?
.OrderByDescending(t => t.CreationTime)
.ToListAsync();
return new ListResultDto<ThingListDto>(
ObjectMapper.Map<List<ThingListDto>>(things)
);
}
}