将 Entity Framework Core 与 Cosmos Db 结合使用时映射无密钥类型
Mapping keyless type when using Entity Framework Core with Cosmos Db
我有以下 class:
[Keyless]
public class SimpleTimeSpan
{
public int Days { get; set; }
public int Hours { get; set; }
public int Minutes { get; set; }
}
我在这样的实体 class 中使用:
public class MyEntity
{
public Guid Id { get; set; }
public string SomeProperty { get; set; }
public SimpleTimeStapn Cutoff { get; set; }
}
我正在使用 Cosmos db 作为数据库,并且正在使用包 Microsoft.EntityFrameworkCore.Cosmos 5.0.x.
保存到数据库时,我希望得到这样的实体
{
"Id": "xxxx-yyyy-zzzz",
"SomeProperty": "my value",
"Cutoff": {
"Days": 1,
"Hours": 5,
"Minutes": 20
}
}
为此 属性 我得到这个错误:
InvalidOperationException: Unable to determine the relationship
represented by navigation 'MyEntity.Cutoff' of type 'SimpleTimeSpan'
如何映射此 属性?
正如评论部分中提到的 @Danyliv,使用 Owned
实体类型 允许您对只能出现在导航属性中的实体类型进行建模其他实体类型。包含拥有的实体类型的实体是其所有者。
您的 class 将如下所示:
[Owned]
public class SimpleTimeSpan
{
public int Days { get; set; }
public int Hours { get; set; }
public int Minutes { get; set; }
}
我有以下 class:
[Keyless]
public class SimpleTimeSpan
{
public int Days { get; set; }
public int Hours { get; set; }
public int Minutes { get; set; }
}
我在这样的实体 class 中使用:
public class MyEntity
{
public Guid Id { get; set; }
public string SomeProperty { get; set; }
public SimpleTimeStapn Cutoff { get; set; }
}
我正在使用 Cosmos db 作为数据库,并且正在使用包 Microsoft.EntityFrameworkCore.Cosmos 5.0.x.
保存到数据库时,我希望得到这样的实体
{
"Id": "xxxx-yyyy-zzzz",
"SomeProperty": "my value",
"Cutoff": {
"Days": 1,
"Hours": 5,
"Minutes": 20
}
}
为此 属性 我得到这个错误:
InvalidOperationException: Unable to determine the relationship represented by navigation 'MyEntity.Cutoff' of type 'SimpleTimeSpan'
如何映射此 属性?
正如评论部分中提到的 @Danyliv,使用 Owned
实体类型 允许您对只能出现在导航属性中的实体类型进行建模其他实体类型。包含拥有的实体类型的实体是其所有者。
您的 class 将如下所示:
[Owned]
public class SimpleTimeSpan
{
public int Days { get; set; }
public int Hours { get; set; }
public int Minutes { get; set; }
}