【发布时间】:2012-09-25 04:28:48
【问题描述】:
我已经开始使用 Dapper.Net,到目前为止我真的很喜欢它 - 但是,我遇到了一个问题。
假设我有一个 POCO 类,例如:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName { get { return FirstName + " " + LastName; } }
}
现在,使用 Dapper.Net 和 Dapper.Net 扩展,我想通过执行以下操作从数据库中加载该数据类型的所有实例:
string connectionString = CloudConfigurationManager.GetSetting("DBConnection");
using (SqlConnection cn = new SqlConnection(connectionString))
{
cn.Open();
IEnumerable<Types.Person> entities = cn.GetList<Types.Person>();
var forceMe = entities.ToList();
}
这在 Linq 设置中运行良好,但是当它使用 .ToList() 到达行时,它会强制评估,它会在 FullName 上显示“无效的列名”。考虑到它可能尊重 NotMapped 的实体框架 DataAnnotations 内容,我尝试添加一个 NotMapped 属性(在将 EF 5 添加到项目之后)。这不起作用。
那么,问题是,我如何告诉 Dapper.Net 不希望从 DB 中获得一列?这是扩展的问题吗,试图为它在模型 POCO 中看到的所有内容映射一个 DB 列?我是否需要重新编写 SQL,并明确询问我只想要的列,或者有没有办法在列上获得与 NotMapped 等效的列?
【问题讨论】:
-
我越是研究这个,我就越认为这是 Dapper Extensions 的产物,而不是 Dapper.Net 本身。看来,如果我使用核心 Dapper 的东西,并显式构建一个列列表, 或 使用通配符 (*),我也没有问题。只有在使用 GetList 扩展时才会出现这个问题——它似乎会询问类(通过反射?)并建立期望每个公共属性在表中都有一个匹配的列......