我有这样的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();
}
我可以通过EF“保存”WishlistLines
到数据库中,没有任何问题。当我运行此查询时,虽然我收到此错误:
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.
我知道 usingDbSet<T>.SqlQuery()
会将返回的数据映射到实体,但它似乎忽略了DbModel
配置。从错误消息判断(猜测)使用了错误的数据读取器。
所以:
A)我做错了什么吗?
B) 有没有办法利用 EF 的DbModel
感知实体映射器?