You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.5 KiB
C#
100 lines
3.5 KiB
C#
using System;
|
|
using EntityFrameworkCore.Jet.Data;
|
|
using System.Data.Odbc;
|
|
using System.Linq;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace JetProviderExceptionTests
|
|
{
|
|
public class IceCreamTest
|
|
{
|
|
public class IceCream
|
|
{
|
|
public int IceCreamId { get; set; }
|
|
public string Name { get; set; }
|
|
public string Brand { get; set; }
|
|
public DateTime? BestServedBefore { get; set; }
|
|
}
|
|
|
|
public class Context : DbContext
|
|
{
|
|
public DbSet<IceCream> IceCreams { get; set; }
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
optionsBuilder
|
|
// .UseJet("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=JetProviderExceptionTests.accdb")
|
|
.UseJet(
|
|
JetConnection.GetConnectionString("JetProviderExceptionTests.accdb", OdbcFactory.Instance),
|
|
OdbcFactory.Instance)
|
|
.UseLoggerFactory(
|
|
LoggerFactory.Create(
|
|
b => b
|
|
.AddConsole()
|
|
.AddFilter(level => level >= LogLevel.Information)))
|
|
.EnableSensitiveDataLogging()
|
|
.EnableDetailedErrors();
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
var today = DateTime.Today;
|
|
|
|
modelBuilder.Entity<IceCream>()
|
|
.HasData(
|
|
new IceCream {IceCreamId = 1, Name = "Vanilla", Brand = "Ben & Jerry", BestServedBefore = today.AddDays(180)},
|
|
new IceCream {IceCreamId = 2, Name = "Chocolate", Brand = "Baskin-Robbins", BestServedBefore = today.AddDays(210)},
|
|
new IceCream {IceCreamId = 3, Name = "Strawberry", Brand = "Dairy Queen", BestServedBefore = today.AddDays(90)},
|
|
new IceCream {IceCreamId = 4, Name = "Matcha", Brand = "Kikyouya", BestServedBefore = today.AddDays(150)}
|
|
);
|
|
}
|
|
}
|
|
|
|
public void Run()
|
|
{
|
|
try
|
|
{
|
|
using (var context = new Context())
|
|
{
|
|
context.Database.EnsureDeleted();
|
|
context.Database.EnsureCreated();
|
|
}
|
|
|
|
for (var i = 0; i < 1024; i++)
|
|
{
|
|
var today = DateTime.Today;
|
|
var from = today.AddDays(110);
|
|
|
|
using var context = new Context();
|
|
|
|
var query1 = context.IceCreams
|
|
.Where(c => c.Name == "Vanilla")
|
|
.Select(c => c.Brand)
|
|
.Union(
|
|
context.IceCreams
|
|
.Where(c => c.BestServedBefore > from)
|
|
.Select(c => c.Brand))
|
|
.ToList();
|
|
|
|
var boolean = false;
|
|
|
|
var query2 = context.IceCreams
|
|
.Select(c => new {f = boolean})
|
|
.ToList();
|
|
|
|
boolean = true;
|
|
|
|
var query3 = context.IceCreams
|
|
.Select(c => new {f = boolean})
|
|
.ToList();
|
|
}
|
|
}
|
|
catch (AccessViolationException e)
|
|
{
|
|
Console.WriteLine(e);
|
|
throw;
|
|
}
|
|
}
|
|
}
|
|
} |