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属性。名称

是否可以对属性进行修改?

复杂度等级2
public 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});

1对n关系中的多个外键

只需将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;
        }
    }
}