1

非常に基本的な電子メールシステムに似たASP.NET MVC 4 Webアプリケーションを、Entity Frameworkのコードを使用して構築しようとしています最初のアプローチ。私が抱えている問題を示すために、次のC#クラスを考えてみましょう。エンティティフレームワークを使用すると、LINQ式はDBに埋め込まれた列のnull値を返します

public class Message 
{ 
    public int Id { get; set; } 
    [Required] 
    public User From { get; set; } 
    [Required] 
    public User To { get; set; } 
    [Required] 
    public string Subject { get; set; } 
    [Required] 
    public string Content { get; set; } 
    [Required] 
    [DataType(DataType.DateTime)] 
    public DateTime CreatedAt { get; set; } 
    public bool IsRead { get; set; } 
    public bool IsTrash { get; set; } 
    public bool IsSpam { get; set; } 
} 
public class User 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Password { get; set; } 
    public ICollection<Role> Roles { get; set; } 
    public string Email { get; set; } 
} 

データベースを播種した後、最初のメッセージ欄はそうのように見える:

Id Subject Content CreatedAt IsRead IsTrash IsSpam From_Id To_Id 
1 Howdy Lorem 2012-02-10 0  0  0  2  1 

そして2人のユーザが、上記IDと、ユーザーテーブルに存在します。これらの二つのフィールドにつながる私は間違って何をやっている

dbContext.Messages.Single(o=>o.Id==1); 

私は、次のLINQを実行する場合、それはそのメッセージのFromおよびへの両方がNULLであるが、他のすべてのフィールドが正しく装着されていることを示していますヌルですか?おそらく私の授業の組織に欠陥がありますか?

+2

make FromとTo virtual。 –

+0

dtryonが正しいです。あなたは仮想キーワードがありません。 –

答えて

2

FromとToが属しているのは複合型で、正しくロードできるようにそれらをvirtualと宣言する必要があります。

関連する問題