Entity framework 实体框架代码第一个aspnet_用户映射/连接

Entity framework 实体框架代码第一个aspnet_用户映射/连接,entity-framework,entity-framework-4,entity-framework-4.1,Entity Framework,Entity Framework 4,Entity Framework 4.1,我想知道EntityFramework4.1代码首先是如何处理涉及现有aspnet_用户表的查询的 基本上,我需要一个涉及aspnet_用户的查询,以便返回用户名: SELECT t.Prop1, u.Username FROM Table1 t INNER JOIN aspnet_User u ON t.UserId = u.UserId Where t.Prop2 = true 理想情况下,在linq,我希望: from t in context.Table1 join u in con

我想知道EntityFramework4.1代码首先是如何处理涉及现有aspnet_用户表的查询的

基本上,我需要一个涉及aspnet_用户的查询,以便返回用户名:

SELECT t.Prop1, u.Username
FROM Table1 t 
INNER JOIN aspnet_User u ON t.UserId = u.UserId
Where t.Prop2 = true
理想情况下,在linq,我希望:

from t in context.Table1
join u in context.aspnet_Users on t.UserId equals u.UserId
where t.Prop2 = true
但我不知道如何让aspnet_用户映射到类用户?如何使aspnet_用户成为我的数据库集的一部分


任何帮助都将不胜感激,请提前感谢

您实际上不需要使用实体框架来访问aspnet_会员资格提供商帐户。实际上,您只需要创建membership对象的一个实例,传入一个唯一的用户标识符和一个布尔值,该值指示是否更新用户的LastActivityDate值,该方法返回一个MembershipUser对象,该对象由指定用户的数据源中的当前值填充

然后,您可以使用“username”属性访问用户名

例如:

private MembershipUser user = 
    Membership.GetUser(7578ec40-9e91-4458-b3d6-0a69dee82c6e, True);

Response.Write(user.UserName);
如果您对MembershipProvider有其他疑问,可以在MSDN网站上以“”为名阅读


希望这对您的需求有所帮助。

不要映射aspnet\u用户表或任何其他与aspnet相关的表。这些表有自己的数据访问和访问逻辑。映射这些表将引入代码重复、可能的问题并打破关注点的分离。如果需要用户进行查询,请仅使用id、用户名、电子邮件和映射视图等所需信息创建视图。关键是视图将是只读的,它将只包含允许的数据,并且您的应用程序不会在不使用ASP.NET API的情况下意外修改这些数据。

首先阅读Ladislav的答案。如果您仍然想继续:要做您想做的事情,需要将用户、角色和成员表映射到codefirst域中——这意味着首先在代码中编写成员资格提供程序

幸运的是,有一个这样的项目,尽管它不是一个完美的实现。原版是VB,在讨论选项卡中查找我在c#MVC中运行它的工作


我正在与作者合作开发一个更好的实现,它可以保护成员数据(密码、上次登录日期、所有不允许的数据),但允许您映射和扩展用户表。但它还没有准备好

您好,谢谢您的回复,但我只是不想要一个用户的用户名。如果返回了一组用户,会发生什么情况?如何获取每行的用户名?您可以使用:MembershipUserCollection users=Membership.GetAllUsers();它获取数据库中所有用户的集合。然后你就可以像对待任何其他收藏品一样对待这些收藏品了。谢谢。这就是我试图指出的,开发人员真的应该使用通过成员资格提供程序提供给他们的类和方法。感谢您的回复,为了更好地理解上面使用linq的示例中的视图,您是说我有一个SQL视图,并且我将该视图映射为具有各种属性的userinfo对象吗?然后我把这个物体和linq一起用?如果可能的话,你能举个例子吗?