我正在嘗試使用Dapper進行數據訪問(在ASP.NET MVC3 FWIW中)。我有一個T-SQL視圖(在SQL Server中)是這樣的:使用Dapper從T-SQL視圖填充對象
SELECT s.*, c.CompanyId AS BreakPoint c.Name AS CompanyName
FROM tblStaff AS s
INNER JOIN tblCompanies AS c ON c.CompanyId = s.CompanyId
非常簡單。基本上是一個員工名單,每個員工都有一個公司。
我遇到的問題是,我試圖將此查詢的輸出映射到我的POCO上,但因爲視圖中的每個字段必須是唯一的(即公司名稱而不是已存在於tblStaff中的名稱)映射到POCO不起作用。
下面的代碼:
var sql = @"select * from qryStaff";
var people = _db.Query<Person, Company, Person>(sql, (person, company) => {person.Company = company; return person;}, splitOn: "BreakPoint");
任何意見,我怎麼可能會解決這個難題?我願意改變我的觀點,因爲現在我很難理解如何進步。
我得到的問題是,我的公司模型有一個名爲'Name'而不是CompanyName的屬性,但爲了在視圖中維護一個唯一的列,我必須使用別名,因此精巧器映射可以'將視圖列映射到POCO屬性。沒有將我的模型屬性重命名爲荒謬的名稱,有沒有解決方案? – 2012-04-24 15:52:44
您可以運行兩個單獨的查詢來填充業務對象。我不確定你有另外的選擇。 – 2012-04-24 16:19:26