我的企業有一個從電子郵件創建MailMessage的方法。我使用的方法獲取一個Email對象作爲參數,這是一個簡單的POCO對象,外鍵屬性如ToId和FromId已經被設置。該實體還具有EmailAddress實體的導航屬性(FromEmailAddress和ToEmailAddress)。實體框架在新創建的實體上使用導航屬性
我想要的是使用這些導航屬性。我能這樣做的方式是下面的,但它看起來像一個HAX:
public MailMessage CreateEmail(Email email)
{
var tmpEmail = db.Set<Email>().Create();
db.Emails.Add(tmpEmail);
db.Entry<Email>(tmpEmail).CurrentValues.SetValues(email);
db.SaveChanges();
email = tmpEmail;
然後,我使用的電子郵件在我的代碼。這樣,實體現在有一個代理,所以我可以使用導航屬性。有沒有更簡單的方法來做到這一點?
您的實體必須附加到上下文以使用導航屬性。所以不行,雖然你可以用不同的方式編寫代碼,但它也可以實現你的目標。 – Svarog
我也試過,但是當我用db.Emails.Attach(電子郵件)附加它時,導航屬性不可用。 – norbip