我有一個存儲過程GetMyTime。它有一個參數int PersonID,並返回一個數據時間。將它添加到EDMX並將其作爲函數導入後。然後我試圖嘲弄了4.0編寫如下代碼:如何在EF 3.5中爲存儲過程編寫導入函數的代碼?
public ObjectResult<Nullable<global::System.DateTime>> GetMyTime(Nullable<global::System.Int32> PersonID)
{
ObjectParameter[] PersonIDParameters;
if (PersonID.HasValue)
{
PersonIDParameters = new ObjectParameter[]{new ObjectParameter("PersonID", PersonID)};
}
else
{
PersonIDParameters = new ObjectParameter[]{new ObjectParameter("PersonID",typeof(global::System.Int32))};
}
return base.ExecuteFunction<Nullable<global::System.DateTime>>("GetMyTime", PersonIDParameters); //this line cause error
}
但我會在最後一行錯誤:「System.DateTime的」 錯誤2類型不能在通用類型或方法'System.Data.Objects.ObjectContext.ExecuteFunction(string,params System.Data.Objects.ObjectParameter [])'中用作類型參數'TElement'。 「System.DateTime?」沒有裝箱轉換到'System.Data.Objects.DataClasses.IEntityWithChangeTracker'。
如何解決?
謝謝。我正在使用3.5,而不是4.0(XP上的VS 2008 sp1)。是否可以修改代碼並使其工作? – KentZhou 2009-09-03 20:00:04
在3.5中,您只能映射返回實體類型的proc。 – 2009-09-03 20:39:23