假设我有以下DTO:
class User
{
string Name { get; }
Permissions Permissions { get; }
}
class Permissions
{
// User Parent { get; } - may or may not add this, whatever is easier
bool SomePermissionProperty { get; }
IEnumerable<NestedPermission> NestedPermissions { get; }
}
class NestedPermission
{
// Permissions Parent { get; } - may or may not add this, whatever is easier
bool SomeNestedProperty { get; }
}
所以我有一个User对象。每个用户只有一个与1对1关系关联的权限对象。每个Permissions对象都有几个与之关联的NestedPermissions对象,即1对多关系。
理论上,我认为应该有这样的表格布局:
Table: User
string Name
Table: Permissions
string UserName // refers to User.Name
bool SomePermissionProperty
Table: NestedPermission
string UserName // refers to Permissions.UserName, which in turn refers to User.Name
bool SomeNestedProperty
有没有办法以一种能够生成如此简单的表格布局的方式在EntityFramework Core中流畅地映射我的DTO?
(到目前为止,我只发现了将阴影属性添加为关系键的方法,但我试图避免使用额外的列。或者,当我也向子对象添加导航属性时,EF开始使用关系键覆盖列而不是它们的实际值,例如User.Name将包含一些EF生成的值,用于描述用户和权限之间的关键,而不是其实际值)
答案 0 :(得分:0)
尝试使用Entity Framework并将1:1关系规范化,正如here所述。
您称之为&#34;额外关系键列&#34;,对于任何标准化都是必需的。实体框架为1:N和M:N关系生成必要的列和属性。
答案 1 :(得分:0)
EF使用一些约定来映射PK和FK。如果您需要一些自定义名称,则应在DbContext中手动配置它:
.last_sync
你的实体:
$?
这是远远的FK。你仍然必须以某种方式定义PK,我假设这部分你没有为简洁起见..