2016-09-26 11 views
0
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); 
     } 

「を入力するSystem.Data.Entity.DynamicProxies.Organisation』タイプのオブジェクトをキャストすることができませんそして、私人のモデルが怒鳴る私はなぜそれを確認していないSite.Models.Person 『

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; } 

ですエラーを生成しています。私は正しくキャストしていません 人=(人)database.People.SingleOrDefault(e => e.Username == User.Identity.Name);

アドバイスをしてください。

+1

どのようなタイプの 'database.People'ですか?なぜ明示的にキャストしていますか? – haim770

+0

こんにちはハイム; [InverseProperty( "People")] パブリック仮想組織組織{get;セット; } [Display(Name = "Organization")] [ForeignKey( "Organization")] public int? OrganisationId {get;セット; } - 問題を引き起こしていない – user3624511

+0

InverseProperty Personクラス内の人 – user3624511

答えて

1

「人」は特定の組織にリンクされています。

「組織」は特定の人物にリンクすることはできません。

ORMでは、「組織」はそれに関連付けられた一連の人物を持つと見なすことができますが、その関係は「組織に所属する人物」の関係にエンコードされています。 (。[InverseProperty]注釈によって)

したがって、次のように言うのは間違っている:

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

ない「ここでは逆プロパティ」があってはいけません。それは意味をなさない。そして、それは循環的な関係の定義であるため、おそらくうまくいかないでしょう。それはORMに組織の人物を理解させるために人の組織を見るように言うのと同じですが、人の組織を理解するための組織。

したがって、[InverseProperty("People")]行を削除してください。

+0

こんにちは@Mike Nakis私はあなたのアプローチを試みましたが、まだ動作していません。私は2つの異なるテスト環境で2つの異なるデータベースを持っています。それは絶対に正常に1つではなく、他のデータベースでも両方のデータベースがライブからコピーされているので、両方が同一で同じSQLサーバーのバージョンです。 – user3624511

+0

これは、一部のライブから一部のテスト環境などにコピーされた一部のデータベースとは関係のない、全く異なる質問になります。 –

関連する問題