EntityFramework InverseProperty与中间类

时间:2013-04-12 20:15:24

标签: c# entity-framework-5

我有3个班级:

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的功能?

1 个答案:

答案 0 :(得分:1)

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

您最好的选择可能是User的特殊方法:

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