我有一个DbModel
像这样的配置:
modelBuilder.Entity<WishlistLine>()
.HasKey(w => w.PersistenceKey)
.Property(w => w.PersistenceKey)
.HasColumnName("WishlistLineId");
我已经通过以下两种方法运行查询:
public IEnumerable<WishlistLine> FetchWishlistLinesUsingLogonName(string logonName)
{
return GetFromRawSql(@"
SELECT wl.* FROM WishlistLines wl
INNER JOIN Accounts a ON wl.AccountId = a.AccountId
LEFT JOIN Users u ON u.AccountId = a.AccountId
WHERE u.LogonName = @p0", logonName);
}
protected IEnumerable<TEntity> GetFromRawSql(string sqlQuery, params object[] parameters)
{
return _dbSet.SqlQuery(sqlQuery, parameters).ToList();
}
我可以“拯救” WishlistLines
到通过EF数据库中没有任何问题。 当我运行此查询,虽然我得到这个错误:
The data reader is incompatible with the specified 'DataAccessLayer.DatabaseContext.WishlistLine'. A member of the type, 'PersistenceKey', does not have a corresponding column in the data reader with the same name.
我理解的是,使用DbSet<T>.SqlQuery()
将返回的数据映射到所述的实体,但是它似乎是忽略DbModel
配置。 判断从正在使用错误的数据读取器的错误消息(猜测)。
所以:
A)我在做什么错?
B)是有办法利用英孚的DbModel
知晓的实体映射器?