2012-01-10 1 views
0

でページブログ(接続ユーザー)の作成者を参照すると、私は私が私のページ(ブログのページ)をアクセスするためのエンティティを持っています。私のエンティティ

ここにある:

public class Page 
{ 
    [Key] 
    public int PageId { get; set; } 

    public string AuthorName { get; set; } 

    [ForeignKey("AuthorName")] 
    public virtual MembershipUser Author { get; set; } 

    public string Title { get; set; } 
    public string Description { get; set; } 
    public string Content { get; set; } 
    public DateTime? PublishDate { get; set; } 
    public bool Published { get; set; } 
    public DateTime LastModified { get; set; } 
} 

あなたが見ることができるように、私は(実際にはこれは、接続されたユーザーである)ページを作成した人への参照を保持したいと思います。そこで私のクラス(MembershipUser型)のAuthorメンバーを定義しました。また、外部キーを定義しようとしましたが、メンバーシップエンティティにプライマリキーが存在しないため、動作しません。 ifがaspnetオブジェクトであるため、このエンティティに1つを追加できません。

は、どのように私は自分のページの実体でページの作成者への参照を持っているために進むことができますか?

ありがとうございました。

答えて

0

MembershipUserから継承するCustomMembershipUserを作成して、MembershipUserを拡張することができます。

CustomMembershipUserに任意のフィールドを追加できます。元のフィールドと追加のフィールドの両方で独自のテーブルを作成する必要があります。あなたがこれを行うことができます方法について説明し

Here is some documentation

+0

あなたの答えをありがとう。私はこの解決策を避けることを好む。可能であれば、asp.netメンバーシップ・プロバイダーを単に維持したいと思っています。フィールドを追加する必要がないため、私は単に「ページエンティティ」とユーザーとの間の参照を保持したいと考えています。 – Bronzato

+0

MembershipUserを拡張しても、ASP.NETが提供するすべてのインフラストラクチャを引き続き使用できます。作成したテーブルの新しいエンティティをモデルに追加して、ナビゲーショナルプロパティを設定することもできます。 –

0

あなたはどのようなORMを使用していますか?

とにかく、あなたはあなたのORMにマッピングされていないクラスを参照することができません。 SystemUserのようなエンティティを作成し、それをテーブルにマップし、Pageエンティティで参照することができます。あなたがMembershipを使用してログインすると、あなたはとてもあなたが後でそれを使用することができHttpSessionでそのSystemUserを照会し、それを格納することができます。

+0

私はEntity Frameworkを使用しています。 ORMにマッピングされていないクラスを参照することはできません。私は単純に文字列型のメンバを追加し、その中にユーザ名を格納すると思います。だから私のページと私のユーザーとの間にリンクはありません。 – Bronzato

関連する問題