1对n关系中的多个外键
本文关键字:关系 | 更新日期: 2023-09-27 18:06:59
public class Folder
{
[Key]
public string Name { get; set; }
public virtual ICollection<File> Files { get; set; }
}
public class File
{
[Key, Column(Order = 0)]
public string FolderName { get; set; }
[Key, Column(Order = 1)]
public DateTime FileName { get; set; }
public virtual Folder Folder { get; set; }
}
chanlange 修饰File类的方法,使:
new File() {Folder = folder, FileName= "bla-bla"};
根据folder的值自动设置File对象的FolderName属性。名称
是否可以对属性进行修改?
复杂度等级2public class Folder
{
[Key, Column(Order = 0)]
public string PC { get; set; }
[Key, Column(Order = 1)]
public string Name { get; set; }
public virtual ICollection<File> Files { get; set; }
}
public class File
{
[Key, Column(Order = 0)]
public string PC { get; set; }
[Key, Column(Order = 1)]
public string FolderName { get; set; }
[Key, Column(Order = 2)]
public DateTime FileName { get; set; }
public virtual Folder Folder { get; set; }
}
同样的问题如何训练模型在指令
后自动设置外键new File() {Folder=folder, FileName='bla-bla'}
简而言之,如何在属性
上写下以下内容HasRequired(a => a.Folder).WithMany(b => b.Files).HasForeignKey(c => new { c.Pc, c.FolderName});
只需将Folder
属性从自动实现更改为具有backing字段的属性,并在其setter中设置FolderName
。还要为这个属性添加外键属性:
public class File
{
private Folder _folder;
[Key, Column(Order = 0)]
public string FolderName { get; set; }
[Key, Column(Order = 1)]
public DateTime FileName { get; set; }
[ForeignKey("FolderName")]
public virtual Folder Folder
{
get { return _folder; }
set
{
if (value == null)
throw new ArgumentNullException();
_folder = value;
FolderName = _folder.Name;
}
}
}