让我们看看official docs:
中的示例public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public BlogImage BlogImage { get; set; }
}
public class BlogImage
{
public int BlogImageId { get; set; }
public byte[] Image { get; set; }
public string Caption { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
正如我们所看到的,我们已经完全定义了Blog和BlogImage之间的一对一关系,其中Blog是父级,而BlogImage是子级实体。
但是,如果我们看一下创建的表格,我们会看到这个标题:
我在BlogImage表中对这个BlogId有些误解,我们不应该在Blog表中定义BlogImageId外键,这是什么原因,在子实体中定义外键还是在父类中?如果我们有一个孩子的一千个父母,那么子实体中就会有数千个外键!很奇怪。
答案 0 :(得分:0)
文档刚刚用这种方式解释了一对一的关系,但这不是唯一的方法。你的思维方式也是正确的。以下在EF中也是有效的一对一关系。
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public int BlogImageId { get; set; }
public BlogImage BlogImage { get; set; }
}
public class BlogImage
{
public int BlogImageId { get; set; }
public byte[] Image { get; set; }
public string Caption { get; set; }
public Blog Blog { get; set; }
}
答案 1 :(得分:0)
是的,对于确切的一对一关系,您应该使用此模型(您生成的表模式对应于一对多关系):
1> ssh:start().
ok
2> {ok, Pid, ConnRef} = ssh_sftp:start_channel("my.server.com").
{ok,<0.52.0>,<0.47.0>}
3> ssh_sftp:list_dir(Pid, ".").
{ok,[".login",".bash_history",".login_conf",".profile",".rhosts",".lesshst",".ssh","some","other","files",".shrc","..","."]}
4> {ok, Data} = ssh_sftp:read_file(Pid, ".login").
{ok,<<"# $FreeBSD: release/10.0.0/share/skel/dot.login 190477 2009-03-27 21:13:14Z ru $\n#\n# .login - csh login scri"...>>}