【MVC5】5.创建一个连接字符串和SQL Server LocalDB工作

创建一个连接字符串和SQL Server LocalDB工作


您创建的类的moviedbcontext处理与数据库的连接对象映射的电影数据库记录的任务。然而,你可能会问的一个问题是如何指定它将连接到哪个数据库。其实你不需要指定要使用的数据库,实体框架会默认使用LocalDB。在本节中我们将明确地增加在应用程序的Web.config文件中的连接字符串。


SQL Server Express LocalDB

LocalDB是一个轻量级版本的SQL Server Express数据库引擎开始对需求和运行在用户模式。LocalDB运行在一个特殊的执行模式的SQL Server Express,使你能够与数据库mdf文件工作。通常,LocalDB数据库文件存放在Web项目的app_data文件夹。

SQL Server Express建议不要在生产中使用的Web应用程序。LocalDB尤其不能用于Web应用程序的生产是因为它的设计工作与IIS。然而,一个LocalDB数据库可以很容易地迁移到SQL Server或SQL Azure。

在Visual Studio 2013(和2012),通过使用Visual Studio LocalDB默认安装。

默认情况下,实体框架是一个连接字符串命名为对象上下文类相同(moviedbcontext这个项目)。更多信息请参阅SQL Server连接字符串ASP.NET Web应用程序。


打开应用程序根Web.config文件如下所示。(不是Views文件夹的Web.config文件)




找到<connectionStrings>元:




添加下面的web.config文件中的连接字符串> < connectionStrings元素。


<add name="MovieDBContext" 
   connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
   providerName="System.Data.SqlClient" 
/> 


下面的示例演示Web.config文件的一部分与新的连接字符串添加:


<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcMovie-20130603030321.mdf;Initial Catalog=aspnet-MvcMovie-20130603030321;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="MovieDBContext"    connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient"
/>


这两个连接字符串是非常相似的。第一个连接字符串命名为defaultconnection和用于会员数据库来控制谁可以访问应用程序。你添加连接字符串指定数据库命名LocalDB movie.mdf位于app_data文件夹。我们将在本教程中没有会员数据库,对会员的更多信息,身份验证和安全,看看我的教程创建一个SQL数据库认证和ASP.NET的MVC的应用程序部署到Azure应用程序服务。

连接字符串的名称必须DbContext类的名称匹配。


using System;
using System.Data.Entity;

namespace MvcMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }

    public class MovieDBContext : DbContext
    {
        public DbSet<Movie> Movies { get; set; }
    }
}


其实你不需要添加 MovieDBContext连接字符串。如果你不指定一个连接字符串,实体框架会随着DbContext类的完全限定名称创建用户目录数据库(在这种情况下 MvcMovie.Models.MovieDBContext)。你可以命名数据库的任何你喜欢的东西,只要它有MDF的后缀。例如,我们可以 MyFilms.mdf名称数据库。


接下来,你将建立一个新的MoviesController类,你可以用它来显示电影数据并允许用户创建新的电影列表。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例: 1. 创建一个 ASP.NET MVC 项目 2. 在 Models 文件夹下创建一个名为 User.cs 的类,表示用户模型: ```csharp public class User { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } public string Email { get; set; } } ``` 3. 在 Controllers 文件夹下创建一个名为 UserController.cs 的控制器,用于处理用户相关的逻辑: ```csharp public class UserController : Controller { private readonly ApplicationDbContext _context; public UserController(ApplicationDbContext context) { _context = context; } // GET: User public ActionResult Index() { var users = _context.Users.ToList(); return View(users); } // GET: User/Create public ActionResult Create() { return View(); } // POST: User/Create [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(User user) { if (ModelState.IsValid) { _context.Users.Add(user); _context.SaveChanges(); return RedirectToAction("Index"); } return View(user); } // GET: User/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var user = _context.Users.Find(id); if (user == null) { return HttpNotFound(); } return View(user); } // POST: User/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(User user) { if (ModelState.IsValid) { _context.Entry(user).State = EntityState.Modified; _context.SaveChanges(); return RedirectToAction("Index"); } return View(user); } // GET: User/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var user = _context.Users.Find(id); if (user == null) { return HttpNotFound(); } return View(user); } // POST: User/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { var user = _context.Users.Find(id); _context.Users.Remove(user); _context.SaveChanges(); return RedirectToAction("Index"); } // GET: User/Login public ActionResult Login() { return View(); } // POST: User/Login [HttpPost] [ValidateAntiForgeryToken] public ActionResult Login(string name, string password) { var user = _context.Users.FirstOrDefault(u => u.Name == name && u.Password == password); if (user == null) { ModelState.AddModelError("", "用户名或密码错误"); return View(); } Session["UserId"] = user.Id; return RedirectToAction("Index"); } // GET: User/Logout public ActionResult Logout() { Session.Clear(); return RedirectToAction("Index"); } } ``` 4. 创建视图文件夹,分别在 Views/User 文件夹下创建 Index.cshtml、Create.cshtml、Edit.cshtml、Delete.cshtml、Login.cshtml 文件,用于展示用户列表、添加用户、编辑用户、删除用户和登录页面。 5. 在 Startup.cs 中配置数据库连接: ```csharp public void ConfigureServices(IServiceCollection services) { // ... services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); // ... } ``` 6. 在 appsettings.json 中配置数据库连接字符串: ```json { "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" }, // ... } ``` 7. 运行项目,即可进行增删改查和登录操作。 注意:上述示例中使用了 Entity Framework Core 进行数据访问,需要先安装 Microsoft.EntityFrameworkCore.SqlServer 和 Microsoft.EntityFrameworkCore.Tools NuGet 包。另外,为了简化示例,没有进行身份验证和授权,实际项目中需要进行身份验证和授权才能保证数据安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值