如何消除此错误。
EntityType'String_concept_attributesModel'没有定义键。定义此EntityType的密钥。
我正在尝试从.net mvc控制器上的Postgres数据库中调用函数,它应该以Json数据类型返回结果。
int
我的实体看起来像:
[HttpPost]
public JsonResult ajaxmethod(string test)
{
if (test == null)
{
return Json(new
{
msg = "there is no string",
id = 0,
destination = 000000,
hierarchy = 00000
});
}
using (var db = new PGDbContext())
{
var cmd = db.Database.Connection.CreateCommand();
cmd.CommandText = "public.kp_string_to_concept_attributes";
try
{
db.Database.Connection.Open();
var source = new SqlParameter("@source_string", test);
var result = db.Database.SqlQuery<String_concept_attributesModel>("public.kp_string_to_concept_attributes @source_string", source).ToList();
if(!result.Any())
{
return Json(new
{
msg = "Empty list",
id = 00000,
destination = 000000,
hierarchy = 00000
});
}
return Json(new
{
msg = "all done",
id = result.First().concept_id,
destination = result.First().attribute_id,
hierarchy = result.First().description_id
});
}
finally
{
db.Database.Connection.Close();
}
}
我不能将键放在某些行的顶部,因为所有这些都不是唯一的。 那么,如何为此定义密钥? PS。实体框架和postgresql之间的连接是通过使用“数据库中的代码优先”实现的-因此,我没有任何这些edmx文件。
答案 0 :(得分:0)
总是有一个主键是一个好习惯。添加字段公共字符串ID {get;组;} 到String_concept_attributesModel和数据库,并使其自动递增。这应该可以解决问题。 (由于它被称为“ id”,因此实体框架将知道它应该是主键,因此您不必使用[Key])