2

オブジェクトを OODB に保存しようとしています。これは基本的にニュース項目 (タイトル、テキスト、ポスター、および投稿日) です。

ASP.NET MembershipUser クラスからユーザー オブジェクトを問題なく取得できます。

しかし、保存しようとすると、すべてのデータがデータベースに記録されていないようです。以下は、create メソッドのコード サンプルです。

[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);
}

たとえば、DB からオブジェクトをロードすると、ユーザー名がありません。これは私のロード方法です:

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

オブジェクトの一部の変数が保存されない理由を知っている人はいますか?

4

1 に答える 1

1

はい、originalposterをGUIDとして定義するのが最善です。私が正しく覚えていれば、デフォルトのasp.netメンバーシッププロバイダーはUserIdをGuidとして定義しています。そうすれば、それは機能します。

次に、次のように実行できます。

newsitem.originalposter = (Guid)Membership.GetUser().ProviderUserKey;
于 2011-11-22T16:00:11.477 に答える