【发布时间】:2014-01-13 21:48:30
【问题描述】:
我目前遇到的问题是 Entity Framework 5 没有返回当该实体派生自具有我要查询的属性的实体时存在的记录。
这些是我的实体:
public class Person
{
[Key]
public int Id { get; set; }
public string Email { get; set; }
}
public class User : Person
{
public DateTime LastLoginDate { get; set; }
}
我的数据上下文:
public class DataContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Person> Persons { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().Map(m => { m.ToTable("User"); });
modelBuilder.Entity<Person>()
.Property(x => x.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
存储库:
public class UserRepository
{
private readonly DataContext _dataContext;
public UserRepository(DataContext dataContext)
{
_dataContext = dataContext;
}
public User GetByEmailAddress(string emailAddress)
{
if (string.IsNullOrEmpty(emailAddress))
throw new ArgumentException("The emailAddress parameter cannot be null or empty.", "emailAddress");
//This query works
var working = _dataContext.Persons
.FirstOrDefault(x => x.Email.Equals(emailAddress, StringComparison.CurrentCultureIgnoreCase));
//Where as this returns null
var query = _dataContext.Users
.FirstOrDefault(x => x.Email.Equals(emailAddress, StringComparison.CurrentCultureIgnoreCase));
return query;
}
}
如果我尝试通过电子邮件地址查询 Person,我会得到我正在寻找的记录;但是,如果我通过电子邮件地址查询 用户,我会得到一个空结果。
任何建议将不胜感激。
【问题讨论】:
标签: c# sql entity-framework