带有中间类的EntityFramework InverseProperty

本文关键字:EntityFramework InverseProperty 中间 | 更新日期: 2023-09-27 18:08:49

我有三个类:

public class User
{
    ...
    public List<SerialHistory> SerialHistory { get; set;}
    ...
}
public class SerialHistory
{
    ...
    public DateTime DateAdded { get; set; }
    public SerialNumber SerialNumber { get; set; }
    ...
}
public class SerialNumber
{
    ...
    public User User { get; set; }
    ...
}

我真的希望当我这样做的时候:

user.SerialHistory.Add(new SerialHistory { 
                                            SerialNumber = serialNumber, 
                                            DateAdded = DateTime.Now 
                                         });

使serialNumber.User自动获得user

这是可能的还是超出了EntityFramework的能力?

带有中间类的EntityFramework InverseProperty

不,实体框架中没有特殊的选项来确保这一点。User.SerialHistorySerialNumber.User是两种不同关系的导航属性。你所拥有的是一种特殊的业务逻辑,它不能被数据库中的外键关系强制执行,因此它不能被实体框架的任何映射(基本上只是表示外键关系)强制执行。

最好的选择可能是User:

的特殊方法
public void AddSerialNumber(SerialNumber serialNumber)
{
    serialNumber.User = this;
    SerialHistory.Add(new SerialHistory { 
                                            SerialNumber = serialNumber, 
                                            DateAdded = DateTime.Now 
                                        });
}