在位于另一个数据库的表中引用使用ASP.NET MVC3中的默认成员资格提供程序创建的用户?

时间:2012-03-07 15:01:04

标签: asp.net-mvc entity-framework asp.net-membership membership-provider

要引用表中的外键,我使用以下代码:

public class MyClass
{
    public int ExampleID { get; set; }
    public virtual Example Example { get; set; }
}

我如何引用ASP.NET MVC 3中使用的默认成员资格提供程序中的用户?

我认为这将是一件简单的事情:

public class MyClass
{
    public int UserID { get; set; }
    public virtual User User { get; set; }
}

。 。 。但我不知道如何专门引用用户(没有“用户”类,我知道有LogOnModel和RegisterModel的类 - 但这些不直接引用用户本身。)

我如何在表格中完成这种关系?

我是否以一种被认为是非传统的方式接近这种情况?

(要明确:我想在使用默认成员资格提供程序创建的用户与我自己的数据库中的表之间建立关系)

1 个答案:

答案 0 :(得分:2)

没有。首先,为了做到这一点,您需要将用户表映射到数据模型中。但是,建议不要这样做,因为您有两个不同的系统来管理相同的数据。

相反,你会做这样的事情:

from d in dc.MyClasses where d.UserID == Membership.GetUser().ProviderUserKey select d

为了找出与您的数据相关联的用户。您需要在类中添加uniqueidentifier列,然后在创建MyClass时添加用户ProviderUserKey。然后,当您获得MyClass时,您可以通过Membership API通过密钥查找用户。

编辑:

我没注意到您说的是另一个数据库的部分。正如我在评论中所说,实体框架不支持其他数据库中的映射表。它只是单一数据库。可以创建映射到另一个数据库的视图,然后将这些视图映射到您的视图中,但您必须手动管理所有关系,并且它将是只读的。

访问另一个数据库中的成员资格数据的最简单方法是将成员资格数据提供者指向该数据库(成员api提供者具有与EF数据库不同的连接字符串),然后使用我在上面提到的技术。