我对实体框架相当陌生,并且正在使用核心版本来学习它。我试图了解如何自定义模型关系。
我的基本模型是有一个公司实体和一个联系人实体。一个公司可以有多个联系人。公司可以有一个 KeyContact,它必须是关联联系人之一,但不是必需的。
因此,存在一对多关系,也存在一对一关系。我尝试按如下方式实现这一点(为了清楚起见,删除了大多数其他字段);
public class Company
{
public int Id { get; set; }
public int? KeyContactId { get; set; }
public ICollection<Contact> Contacts { get; set; }
public Contact KeyContact { get; set; }
}
public class Contact
{
public int Id { get; set; }
public int CompanyId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Company Company { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
无法添加此迁移并显示消息;
无法确定“ICollection”类型的导航属性“Company.Contacts”表示的关系。手动配置关系,或从模型中忽略此属性。
我有点明白为什么它会抱怨这一点,但我不确定模型构建器是否有办法可以配置它,或者它是否是无效模式。我的模型构建器目前还只是基础; …
我正在尝试使用 Powershell 访问 JSON 对象的特定属性值。不幸的是,我不知道结构中某些父属性的键,因此我无法以直接的方式执行此操作。此外,由于 JSON 不是数组,我无法通过索引位置访问。
上下文是我正在从 elasticsearch 查询正在运行的任务列表,并且需要获取任务的 ID(我知道只会有一个),以便我可以进行后续调用以发现其完成状态。
我研究了一些查询方法,但不确定如何应用它们(PowerShell 语法对我来说相当新)。
我正在使用的 JSON 响应如下所示;
"nodes" : {
"oTUltX4IQMOUUVeiohTt8A" : {
"name" : "H5dfFeA",
"transport_address" : "127.0.0.1:9300",
"host" : "127.0.0.1",
"ip" : "127.0.0.1:9300",
"tasks" : {
"oTUltX4IQMOUUVeiohTt8A:124" : {
"node" : "oTUltX4IQMOUUVeiohTt8A",
"id" : 124,
"type" : "direct",
"action" : "cluster:monitor/tasks/lists[n]",
"start_time_in_millis" : 1458585884904,
"running_time_in_nanos" : 47402,
"cancellable" : false,
"parent_task_id" : "oTUltX4IQMOUUVeiohTt8A:123"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过这个给定的结构,我希望能够访问第一个“任务”的 ID 属性。
所以如果我知道道具键它将是:
nodes.oTUltX4IQMOUUVeiohTt8A.tasks.oTUltX4IQMOUUVeiohTt8A:124.id
Run Code Online (Sandbox Code Playgroud)
在事先不知道密钥的情况下如何访问该值?
非常感谢任何帮助。
谢谢尼克