在我的模型类 OwnedModule 中,我将 OwnerID 作为 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 的名称。
但似乎我将所有者的名称设置为我的视图模型视图的方式是错误的,当我运行应用程序时,我收到以下错误。
LINQ to Entities 无法识别方法“System.String GetModuleOwner(System.Guid)”方法,并且该方法无法转换为存储表达式。
当我评论我设置所有者值的行时(Owner = GetModuleOwner(module.ModuleOwnerId)),一切正常。