【问题标题】:Fluent NHibernate Reference to MembershipUserFluent NHibernate 对 MembershipUser 的引用
【发布时间】:2013-09-26 20:13:24
【问题描述】:


我想创建包含用户身份 GUID 的表(SQL Server)并在 Fluent NHibernate 中引用它,这是我的模型:

public class Invoice {
    public virtual Guid Identity { get; set; }
    public virtual MembershipUser User { get; set; }
    public virtual int Price { get; set; }
}

所以映射应该是:

public class InvoiceMap : ClassMap<Invoice> {
    public InvoiceMap() {
        Id(x => x.Identity).GeneratedBy.GuidNative();
        Reference(x => x.User).Column("User");
        Map(x => x.Price);
        Table("invoices");
    }
}

但只有一个问题。 MembershipUser 类也应该被映射。
如果不映射MembershipUser,我怎么能做到这一点?

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate membership-provider fluent-nhibernate-mapping


    【解决方案1】:

    我猜你的问题是“如何在 nHibernate 中使用 MembershipUser/Membership 和 Role Provider”。

    首先,如果您不想重新发明轮子,我建议您从您的类中删除 MembershipUser 属性,并只引用某个标识符。否则它会变得更加复杂。稍后您可以从 MembershipProvider 转换/检索 MembershipUser...

    有一篇关于 codeplex 的好文章描述了如何使用 nHibernate 实现自定义成员资格提供程序 http://www.codeproject.com/Articles/55174/Custom-Fluent-Nhibernate-Membership-and-Role-Provi

    【讨论】:

    • 有没有办法做这样的事情:Reference(x =&gt; x.User).Column("User").Callback(x =&gt; MembershipProvider.GetUserById(x));?
    • 不,但我的意思是您可以将一个属性放入未映射的实体中(类型为 MembershipUser)并手动设置它
    • 顺便说一句,您可以将此标记为已回答,如果您仍有问题,请提出更具体的问题,因为这个问题有点模糊
    • 在标记之前,你的意思是我可以这样做:Map(x =&gt; x.User); this.Member = MembershipProcider.GetUserById(this.User);?
    • 不在映射中,但一种可能性是更改实体中 User 属性的设置器并设置 MembershipUser ;) 只有在这一点上你才真正拥有信息。映射文件只是定义了元数据,这不是任何业务逻辑的地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2010-10-11
    • 2012-04-16
    相关资源
    最近更新 更多