私はEntity Framework Code Firstを使用しており、わずかな問題が発生しました。GUIDのアクセスクラス
私のような二つのテーブルがあります。
User
+--------+-----------+
| id | name |
+--------+-----------+
| def789 | Bob Smith |
+--------+-----------+
Actions
+--------+--------------+-------------+
| id | grantedTo_id | details |
+--------+--------------+-------------+
| abc123 | def789 | some detail |
+--------+--------------+-------------+
は3つのIDフィールドは、この目的のためにGUIDがあるふり。
User
{
public Guid id {get; set;}
public string name {get; set;}
}
Actions
{
public Guid id {get; set;}
public User grantedTo {get; set;}
public string details {get; set;}
}
私の問題は、クラスの型がユーザーとしてgrantedTo
を定義しているので(それはタイプのGUIDであるため)、何もデータベースからそれに返されないことである。
私のクラスには、次のようになり。
var action = db.Action.ToList()
foreach (var a in db.Action)
{
var user = a.GrantedTo
}
は、その後、ユーザがnull含まれています
だから例えば私のようなシンプルな何かをしている場合。IDで参照されるユーザーを取得するにはどうすればよいですか?
これらは最初にコード化されていますが、私は変更を加えていません。ディスクリプタや使用するべきものがありますか?
var action = db.Action.ToList()
foreach (var a in action)
{
var user = db.Users.Find(...???)
}
しかし、私はGUIDが戻って来ないので、そこに置くべきではありません。
あなたの 'Action'クラスは' public virtual User grantedTo {get; set;} 'と' public Guid UserId {get;セット; } 'ナビゲーションプロパティを作成するには - [Entity Frameworkのリレーションシップとナビゲーションプロパティ](https://msdn.microsoft.com/en-us/library/jj713564(v=113).aspx)を参照してください。 –
@StephenMuecke OP 'public User grantedTo {get;}を持ちます。 set;} 'で十分です。 'virtual'も明示的なFKプロパティも* required *ではありません。 –
'grantedTo'プロパティは' virtual'ではないので、レイジーに読み込むことはできず、あなたは熱心なロードや明示的なロードを使ってロードすることが期待されます。例えば、。 'var action = db.Action.Include(a => a.grantedTo).ToList();'は、リスト内のアクションの 'grantedTo'プロパティを設定します。 –