我有一个如下定义的实体:
ideas
我可以使用此实体在Azure中创建我的数据库,但是,当我尝试访问我的实体时,我收到以下错误:
{" message":" URI中指定的查询无效。财产' Id'是一个无法识别的EdmPropertyKind。"}
我做了一些阅读,发现Azure移动应用程序需要一个小写id的表,但是,如果我将我的Id更改为小写,则自引用不起作用,因为ParentGoalId外键查找Id属性GoalItem和类型不匹配,因此我的数据库迁移失败。有谁知道如何让ParentGoalId引用id属性而不是Id?
非常感谢!
答案 0 :(得分:0)
我做了一些阅读,发现Azure移动应用程序需要一个小写id的表,但是,如果我将我的Id更改为小写,则自引用不起作用,因为ParentGoalId外键查找Id属性GoalItem和类型不匹配,因此我的数据库迁移失败。有谁知道如何让ParentGoalId引用id属性而不是Id?
根据你的代码和描述,我发现你设置了ForeignKey ParentGoalId的类型为int并隐藏了EntityData的id。
据我所知,EntityData的id类型是 string 。因此移动库将通过字符串类型查询数据库。但是您使用 int 替换该属性,因此您得到" URI中指定的查询无效。财产' Id'是一个无法识别的EdmPropertyKind"错误。
实体数据类:
我建议你可以尝试使用实体数据类主键id,因为ForeignKey不会通过用int替换它的类型字符串来隐藏id。
代码如下:
public class GoalItem : EntityData
{
//[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
//public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime DueDate { get; set; }
public bool Complete { get; set; }
[ForeignKey("ParentGoal")]
public string ParentGoalId { get; set; }
[InverseProperty("SubGoals")]
public GoalItem ParentGoal { get; set; }
public List<GoalItem> SubGoals { get; set; }
}
我还创建了一个测试它的演示,结果如下: