无法强制转换'System.Data.Entity.DynamicProxies类型的对象.组织输入'S

本文关键字:对象 类型 输入 DynamicProxies Data 转换 System Entity | 更新日期: 2023-09-27 18:08:58

 try
        {
            person = (Person) database.People.SingleOrDefault(e => e.Username == User.Identity.Name);
          //  m_objLog.Debug("Found user :" + User.Identity.Name);
        }
        catch (Exception ex)
        {
            m_objLog.Debug(ex.Message);
            throw new Exception(ex.Message);
        }

And My Person Model is below

protected override void Initialize() {
            base.Initialize();
            EmailAddresses = new List<EmailAddress>();
            TelephoneNumbers = new List<TelephoneNumber>();
}
[InverseProperty("Person")]
        public virtual List<EmailAddress> EmailAddresses { get; set; }
    [InverseProperty("Person")]
        public virtual List<TelephoneNumber> TelephoneNumbers { get; set; }
    [Display(Name = "Username")]
    public string Username { get; set; }
[InverseProperty("People")]
        public virtual Organisation Organisation { get; set; }

我不知道为什么它产生错误;我演得不对吗person =(人)数据库。SingleOrDefault(e => e. username == User.Identity.Name);

请建议。

无法强制转换'System.Data.Entity.DynamicProxies类型的对象.组织输入'S

一个"人"被链接到一个特定的组织。

一个"组织"不能被链接到一个特定的人。(这没有意义。)

在ORM中,一个"组织"可以被看作有一组与之相关联的人员,但是这种关系被编码在"人员属于组织"关系中。(通过[InverseProperty]注释)

因此,这样说是错误的:

[InverseProperty("People")]
public virtual Organisation Organisation { get; set; }

这里不可能有"逆性质"。这没有任何意义。这是不可能的,因为这将是一个循环关系定义:这就像告诉ORM观察一个人的组织,以找出组织中的人,但也要观察一个组织中的人,以找出一个人的组织。

所以,只要去掉[InverseProperty("People")]