我有一個Employee類,像這樣:LINQ查詢數據存儲在一個類類型具有枚舉類型
public class Employee
{
public Int32 employeeId;
public String employeeFName;
public String employeeSName;
public Gender empGender;
public string empContactNo;
public DateTime empDOB;
public string empAddress;
public Int16 accessLevel;
private string pass;
public String Pass
{
get { return this.pass; }
set { this.pass = value; }
}
public static Gender ConvertToGender(string gen)
{
if (gen == "Male")
return Gender.Male;
else
return Gender.Female;
}
}
其中「性別」是類型的枚舉:
public enum Gender { Male, Female }
我使用以下LINQ查詢:
var query = from emp in hmsdatabase.TblEmployees
where emp.EmpId == employeeid
select new Employee()
{
employeeId = emp.EmpId,
employeeFName = emp.EmpFirstName,
employeeSName = emp.EmpSurName,
empGender = Employee.ConvertToGender(emp.EmpGender),
empContactNo = emp.EmpContactNo,
empDOB = DateTime.Parse(emp.EmpDOB.ToString()),
empAddress = emp.EmpAddress,
accessLevel = Int16.Parse(emp.EmpAccessRight.ToString())
};
雖然在編譯過程中沒有錯誤,我在運行時收到以下錯誤:
System.NotSupportedException:LINQ to Entities無法識別方法'HMSTest.Gender ConvertToGender(System.String)'方法,並且此方法無法轉換爲存儲表達式。
我研究過關於這個錯誤,我知道它不起作用,因爲LINQ無法將用戶定義的函數'Employee.ConvertToGender(string)'轉換爲等價的SQL查詢,它也是有意義的。 那麼有沒有簡單的解決方法?我的意思是這種功能(使用轉換功能)在應用程序中非常常見,微軟人員必須考慮到這一點。 我想知道我完全想念的東西。
你會驚訝,但「公共枚舉性別{男,女} 「 是不足夠的。有很多的人誰也不會能夠選擇男性還是女性,並考慮到你建立一個工作人員相關的軟件,你可以迅速用歧視官司結束了。 – 2013-02-25 06:25:58
哪個版本的實體框架是這樣的? – 2013-02-25 08:40:52
那麼,第三性別的標題可能是什麼? – GaganLamba 2013-02-27 19:42:05