Как мне создать ссылку в моей БД на пользователя из сборки ASP.NET в пользовательской системе? - PullRequest
2 голосов
/ 22 ноября 2011

Я пытаюсь сохранить объект в моем OODB, это в основном новость (заголовок, текст, постер и дата).

У меня нет проблем с извлечением объекта пользователя из класса ASP.NET MembershipUser.

но когда я пытаюсь сохранить, кажется, что не все данные записаны в моей базе данных. Ниже приведен пример кода метода создания:

[HttpPost]
public ActionResult Create(Newsitem newsitem)
{
    if (ModelState.IsValid)
    {
        newsitem.postdate = DateTime.Now;
        newsitem.originalposter = Membership.GetUser(User.Identity.Name, true /* userIsOnline */);

        db.newsitems.Add(newsitem);
        db.SaveChanges();
        return RedirectToAction("Index");  
    }

    return View(newsitem);
}

Например, когда я загружаю объект из моей БД, ему не хватает имени пользователя. Это мой метод загрузки:

public ActionResult Index()
{
    var news = (from n in newsDB.newsitems orderby n.postdate descending select n).Take(10);
    return View(news);
}

Кто-нибудь знает, почему некоторые переменные объекта не сохраняются?

1 Ответ

1 голос
/ 22 ноября 2011

Да, лучше всего, если вы определили originalposter в качестве GUID. Если я правильно помню, поставщик членства asp.net по умолчанию определяет UserId как Guid. Если вы это сделаете, это сработает.

Тогда вы можете сделать следующее:

newsitem.originalposter = (Guid)Membership.GetUser().ProviderUserKey;
...