在我的模型類OwnedModule中,我將OwnerID作爲Guid。LINQ to Entities不識別該方法。 Guid造成麻煩?
還有另一個名爲BusinessUnit的模型類,它包含OwnedModule及其OwnerName中的相同Guid值。
我想告訴OwnedModule,其中包含有關硬件的細節,但有車主爲GUID值,而不是名稱的詳細信息,併爲了這個,我已經創建了一個視圖模型
public class OwnedModuleViewModel
{
public long Id { get; set; }
public string ModuleId { get; set; }
public string TypeName { get; set; }
public string KindName { get; set; }
public string Owner { get; set; }
public DateTime OwnershipStart { get; set; }
}
public class IndexOwnedModule
{
public List<OwnedModuleViewModel> OwnedModules { get; set; }
}
到顯示所有這些細節在我的倉庫我有以下功能
public IndexOwnedModule GetAllOwnedModules()
{
var modulesList = new IndexOwnedModule();
var modules = (_dbSis.OwnedModules.OrderBy(module => module.Id).Select(module => new OwnedModuleViewModel
{
Id = module.Id,
ModuleId = module.ModuleId,
TypeName = module.ModuleType.TypeName,
Owner = GetModuleOwner(module.ModuleOwnerId),//error here
OwnershipStart = module.Start
}));
modulesList.OwnedModules = modules.ToList();
return modulesList;
}
public string GetModuleOwner(Guid id)
{
var ownedModule =_dbSis.Set<BusinessUnit>().FirstOrDefault(t => t.Id == id);
if (ownedModule != null) return ownedModule.Name;
return null;
}
它不會是方便易以顯示GUID值的視圖中的用戶擁有者,所以我想取的,我有GetModuleOwnerName名稱。
但它似乎像我已經設置所有者的名稱到我的viewmodel視圖的方式是錯誤的,並且當我運行該應用程序時出現以下錯誤。
LINQ to Entities不識別方法'System.String GetModuleOwner(System.Guid)'方法,並且此方法不能轉換爲存儲表達式。
當我的評論,我已經設置所有者的值線(所有者= GetModuleOwner(module.ModuleOwnerId)),一切工作正常。
這個工作,但它會更好,有業主使用方法設置,不使代碼看起來乾淨 – Cybercop
@ Biplov13如果你有定義之間的關係'OwnerModule'和'BusinessUnit',你可以簡單地使用'OwnerModule'上的導航屬性來訪問'BusinessUnit'而不是做一個嵌入式選擇。但是我不能肯定地不知道你的模型是如何定義的。 –
不幸的是,這裏沒有激動人心的屬性,但是非常感謝 – Cybercop