Произошла ошибка при сохранении сущностей, которые не раскрывают свойства внешнего ключа для своих отношений

У меня есть простой код в Entity Framework 4.1 сначала код:

PasmISOContext db = new PasmISOContext();
var user = new User();
user.CreationDate = DateTime.Now;
user.LastActivityDate = DateTime.Now;
user.LastLoginDate = DateTime.Now;
db.Users.Add(user);

db.SaveChanges();
user.Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2E") };
db.SaveChanges();


db.Users.Add(new User() { Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2E") } });
db.SaveChanges();

Проблема в том, что я получаю сообщение об ошибке

Произошла ошибка при сохранении сущностей, которые не раскрывают свойства внешнего ключа для своих отношений. Свойство EntityEntries вернет значение null, поскольку отдельная сущность не может быть идентифицирована как источник исключения. Обработку исключений при сохранении можно упростить, предоставив свойства внешнего ключа в типах сущностей. Подробнее см. InnerException.

в

db.Users.Add(new User() { Avatar = new Avatar() { Link = new Uri("http://myUrl/%2E%2E/%2E%2E") } });
db.SaveChanges();

Я не понимаю, почему подобная операция работает. Что-то не так с моей моделью или с ef-code-first?

public class Avatar
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string LinkInString { get; set; }

    [NotMapped]
    public Uri Link
    {
        get { return new Uri(LinkInString); }
        set { LinkInString = value.AbsoluteUri; }
    }
}

public class User
{
    [Key]
    public int Id { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public Avatar Avatar { get; set; }
    public virtual ICollection<Question> Questions { get; set; }
    public virtual ICollection<Achievement> Achievements { get; set; }

    public DateTime CreationDate { get; set; }
    public DateTime LastLoginDate { get; set; }
    public DateTime LastActivityDate { get; set; }
}
50
задан abatishchev 13 January 2015 в 19:09
поделиться