可以使用Entity Framework的Db First模式生成model。
第一步:创建
ASP .NET MVC项目
第二步:创建实体模型
在项目上右击 添加新建项目→Ado.Net实体数据模型
如下图所示:
第三步:与现有的数据库进行连接生成EF实体
然后按照如下所示,选择从数据库生成实体数据模型【当然如果你想使用CodeFirst方式也是可以的,这是后话了】:
新建连接到现有的数据库,如下图所示:
点击下一步,选择我们要生成实体对应的表、试图、存储过程等,如下图所示:
最后点击完成,则系统帮我们生成了数据库实体类以及EDMX的定义文件。
如图所示:
1. 我找到了答案。我会接受这个答案时,我设法创建基于这些一个完全工作的解决方案。●编号:
using Microsoft.AspNet.Identity
...
User.Identity.GetUserId()
那User.Identity.IsAuthenticated和User.Identity.Name将工作不添加using但GetUserId()将不存在没有它。
在MVC中5的默认模板,用户ID是作为字符串存储一个GUID。
●没有最好的做法还,但在扩展配置文件中找到:
概述Identity:
关于如何通过添加一个额外的属性来扩展配置文件示例解决方案:
2.
尝试像:
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()))
ApplicationUser user = userManager.FindByNameAsync(User.Identity.Name).Result
适用于RTM。
3.
试试这个:
var user = Membership.GetUser(User.Identity.Name)
Guid currentUserID = (Guid)user.ProviderUserKey
作品
什么是分配东西的MVC的5个最佳实践
我做在某种程度上你-在项目类中添加用户名。这是simpliest方式。
4.
获取标识是非常简单的,你已经解决了。
你的第二个问题,虽然是一个涉及多一点。
所以,这是所有抢鲜东西的权利 CodeGo.net,但你面临的问题是,你正在与新的属性扩展(或项目集合在你的问题)。
开箱即用的,你会得到一个名为IdentityModel在Models文件夹(在撰写本文时)。在那里你有几个班ApplicationUser和ApplicationDbContext。添加你的收藏Items你要修改ApplicationUser类,就像你,如果这是一个正常的类,你与实体事实上,如果你把引擎盖下咋一看,你会发现,所有的身份相关的类(用户,角色等..),只是现在波苏斯用适当的数据标注,使他们发挥好与EF6。
接下来,你需要做出改变AccountController构造函数,以便它知道你的DbContext。
public AccountController()
{
IdentityManager = new AuthenticationIdentityManager(
new IdentityStore(new ApplicationDbContext()))
}
现在越来越对象为您记录的是一点点深奥是诚实的。
var userWithItems = (ApplicationUser)await IdentityManager.Store.Users
.FindAsync(User.Identity.GetUserId(), CancellationToken.None)
这条线将完成这项工作,你就可以访问userWithItems.Items像你想要的。
心连心
5.
我觉得你的痛苦,我试图做的事。在我来说,我只是想清除
我创建了我所有的控制器从继承一个基控制器类。在这里面我重写OnAuthentication并设置filterContext.HttpContext.User to null这是最好的,我已经成功地远...
public abstract class ApplicationController : Controller
{
...
protected override void OnAuthentication(AuthenticationContext filterContext)
{
base.OnAuthentication(filterContext)
if ( ... )
{
// You may find that modifying the
// filterContext.HttpContext.User
// here works as desired.
// In my case I just set it to null
filterContext.HttpContext.User = null
}
}
...
}
Step 1: 创建新项目我们通过创建一个新的 ASP.NET MVC3 项目开始,点击 文件 ->新建项目,我们使用 Internet 项目模板,这将为我们的应用提供一个默认的起始模板。
当你在解决方案管理器中观察新创建的项目时,你将会看到 ASP.NET MVC3 更新后的工具增为我们的 ASP.NET MVC3 项目增加了一个新的程序集 EntityFramework 。
EntityFramework 程序集实现了 Entity Framework4.1 ,EF4.1 为 .NET 的数据访问提供了巨大的改进,包括 Code First。EF Code First 提供了完全优雅和干净的数据处理方式 ,使你不再需要设计器或者 XML 的映射文件。通过 ASP.NET MVC3 项目就可以简单的使用这个优点。
我们将使用 EF Code First 来实现项目的数据访问。
Step 2: 实现数据模型类
第一步,我们将创建两个类,Product 和 Category,我们应用程序的数据模型,我们在 Models 文件中中创建标准的 POCO “简单的老的 C# 对象” 。代码如下:
注意到上面的类是标准的 .NET 数据类型,不需要派生自任何基类,也不需要实现任何接口。
对于每个单独的属性,每个类有一个关联属性,例如,Product 类有一个名为 Category 的属性使开发人员可以获取产品所属的 Category ,而 Category 类中有一个名为 Products 的属性,使得开发人员可以获取分类的所有产品,EF Code First 可以自动管理这些关联(使用主外键关系),还可以在后台延迟加载数据。
Step 3: 使用 EF Code First 实现 StoreContext 类
现在,我们已经定义了两个模型类,下一步我们将要实现 DbContext 类,使用 EF Code First 需要使用这个类将模型对象映射到数据库中表,我们的实现如下所示:
我们使用 StoreContext 类映射我们的 Product 和 Category 与数据库的关系,它派生自 EF Code First 中的 DbContext,提供了两个属性关联到数据库中的表,对于我们的例子来说,使用默认的“约定胜于配置”方式,这意味着 Products 属性映射到数据库中的 Products 表,Categories 映射到数据库中的 Categories 表。在博文的后面,我还将讨论如何实现自定义的映射。
你可以将这个类加入到解决方案的任何位置,例如,可以放置在 Models 文件夹中,或者放在一个独立的类库项目中,可能你需要在代码的前面增加对于命名空间 System.Data.Entity 的引用。DbContext 和 DbSet 定义在其中。
Step 4: 搭建 Categories 控制器的脚手架
我们已经创建了从数据库获取或者保存数据的所有内容。现在,我们创建一个 ASP.NET MVC 的控制器来实现对于分类数据的创建/编辑/删除/更新,从前的时候,你不得不手动写一个控制器来完成这些功能,包括你自己实现通过 EF Code First 访问数据代码,现在,ASP.NET MVC3 工具更新现在包括内建的脚手架支持帮助你自动完成这些工作。
搭建一个新的 Categories 控制器类,我们在 /Controllers 文件夹上右键,然后选择 增加 Add ->控制器 Controller 上下文菜单。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)