Code I use:
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace DevartMySQLTest
{
class Test
{
public static void Run()
{
var test = new Test();
test.InsertData();
test.TestID();
test.TestGuid();
}
private void InsertData()
{
using (var ctx = new MyDbContext())
{
ctx.CreateDB();
if (ctx.Entity1Set.Count() < 1000)
{
for (var i = 0; i < 1000; i++)
{
var entity = new Entity1()
{
Guid = Guid.NewGuid(),
};
ctx.Entity1Set.Add(entity);
}
ctx.SaveChanges();
}
}
}
private void TestID()
{
using (var ctx = new MyDbContext())
{
var ids = ctx.Entity1Set.OrderBy(x => x.ID).Skip(100).Take(100).Select(x => x.ID).ToList();
var items = ctx.Entity1Set.Where(x => ids.Contains(x.ID)).ToList();
if (items.Count != 100)
{
throw new Exception("Failed.");
}
}
}
private void TestGuid()
{
using (var ctx = new MyDbContext())
{
var guids = ctx.Entity1Set.OrderBy(x => x.ID).Skip(100).Take(100).Select(x => x.Guid).ToList();
// it errors here
var items = ctx.Entity1Set.Where(x => guids.Contains(x.Guid)).ToList();
if (items.Count != 100)
{
throw new Exception("Failed.");
}
}
}
}
class MyDbContext : DbContext
{
public MyDbContext()
: base("TestDB")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public void CreateDB()
{
this.Database.CreateIfNotExists();
}
public IDbSet<Entity1> Entity1Set { get; set; }
}
public class Entity1
{
[Required]
[Key, Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
public Guid Guid { get; set; }
public string Name { get; set; }
}
}
// run tests
Test.Run();
Any idea whether that's a bug?
Thanks