Asp.net mvc 基于guid值搜索表
我需要根据Guid值在表中查找一行。这是我目前一直在做的事情,但不起作用。 我有以下功能Asp.net mvc 基于guid值搜索表,asp.net-mvc,linq,asp.net-mvc-4,datatable,guid,Asp.net Mvc,Linq,Asp.net Mvc 4,Datatable,Guid,我需要根据Guid值在表中查找一行。这是我目前一直在做的事情,但不起作用。 我有以下功能 public ActionResult Details(long id) { var ownerId = _dbSis.OwnedModules.Find(id); var ownerName = _dbCore.BusinessUnits.Find(ownerId.ModuleOwnerId); var moduleV
public ActionResult Details(long id)
{
var ownerId = _dbSis.OwnedModules.Find(id);
var ownerName = _dbCore.BusinessUnits.Find(ownerId.ModuleOwnerId);
var moduleV = (_dbSis.Modules.Select(module => new ModuleDetails
{
Id = id,
ModuleId = module.ModuleId,
TypeName = module.ModuleType.TypeName,
KindName = module.ModuleType.ModuleKind.KindName,
Owner = ownerName.Name,
}));
return View(/*moduleV.FirstOrDefault()*/);
}
目前我在ownerName
中获得空值,而在ownerId
中传递值。
下面是在ownerId中传递的内容的图像
以下是BusinessUnits
表的图像
为什么我的
\u dbCore.BusinessUnits.Find(ownerId.ModuleOwnerId)
不工作或找不到任何值?难道不能根据Guid值找到一些行吗?我看不出有什么理由不能这样做。从未尝试过使用GuiId查找,但我看不到任何说明它无法工作的文档(请参阅)。您是否检查过BusinessUnits在代码中的该点也有项目(不仅仅是在数据库中)?嗯,这听起来可能很愚蠢,但是,我如何检查BusinessUnits在该点是否有项目。当我运行应用程序并单击行var ownerName=\u dbCore.BusinessUnits.Find(ownerId.ModuleOwnerId)上的BusinessUnits
时代码>我得到一个设置符号,单击+符号,右侧显示count=0
。这是否意味着此时没有行?您可以执行.Count()并查看它是什么,或者使用IntelliSense查看它是否有计数。您还应该能够枚举集合以实际查看值。但是,如果计数为0,则不会显示任何内容。如果您将鼠标悬停在_dbCore.BusinessUnits上,它显示count=0,那么我认为您已经找到了答案。愚蠢的问题,但在大多数情况下,这些恼人的问题都有愚蠢的原因。如果您使用的是实体框架,您确定“BusinessUnits”的“Id”属性被标记为Identity吗?也许可以尝试将代码更改为类似dbCore.BusinessUnits.Single(x=>x.Id==ownerId.ModuleOwnerId)的代码,看看是否works@Botis是的,它被标记为标识。我发现属于SISContext
类型的\u dbis
继承自CoreContext
。因此,不要执行\u dbCore.BusinessUnits.Find(ownerId.ModuleOwnerId)代码>如果我执行var ownerName=\u dbSis.Set().Find(ownerId.ModuleOwnerId)代码>它可以工作。不知道我是否应该把它作为答案。