Код: Выделить всё
public class Address : EntityBase
{
public string Name { get; set; }
public string AddressString { get; set; }
public bool IsDeleted { get; set; }
public DateTime? DateDeleted { get; set; }
public string? DeletedBy { get; set; }
}
protected override void ConfigureCore(EntityTypeBuilder builder)
{
builder.ToTable("Addresses", b => b.IsTemporal(
b =>
{
b.HasPeriodStart("ValidFrom");
b.HasPeriodEnd("ValidTo");
b.UseHistoryTable("AddressesHistory");
}));
}
Код: Выделить всё
public async Task GetAtDate(long Id, DateTime utcDate)
{
return await context.Addresses.TemporalAsOf(utcDate).FirstOrDefaultAsync(h => h.Id == Id);
}
Я хочу фильтровать адреса по диапазону дат, но я возникли проблемы с написанием правильного запроса LINQ для достижения этой цели. Фильтры даты ValidFrom и ValidTo не применяются должным образом.
мой текущий код:
Код: Выделить всё
public async Task GetAddressesAtDatesAsync(List idDateTicksList)
{
// Convert to a dictionary for better access to data.
var idDateDictionary = idDateTicksList.ToDictionary(
item => item.Item1,
item => new DateTime(item.Item2)
);
// Get all addresses with id.
var ids = idDateDictionary.Keys.ToList();
var addresses = await context.Addresses.Where(h => ids.Contains(h.Id)).ToListAsync();
// Filter addresses by date tickes.
var result = addresses
.Where(h => idDateDictionary.ContainsKey(h.Id) && h.ValidFrom = idDateDictionary[h.Id])
.ToList();
return result ?? new List();
}
получить несколько данных по диапазону дат во временной таблице.
Подробнее здесь: https://stackoverflow.com/questions/788 ... linq-query