我使用MVC第一次,运行应用程序时,我得到这个错误。
这里是我的步骤。
- 创建一个新的
MVC
空项目 - 安装实体框架5.0.0(PM>安装,包装的EntityFramework -Version 5.0.0)
- 在型号 - MovieReview.cs和MovieReviewContext.cs添加两班。
MovieReview类是这样的
而MovieReviewContext类是这样的
- 在Controllers文件夹我添加一个新的控制器,名为HomeController的。 就这个 。
然后,我在谷歌Chrome或IE浏览器上运行。 而我得到了我在上面提到的错误。 搞不明白该怎么做。 谢谢你的帮助
编辑我没有在任何文件中的任何改变自动生成的代码。
尝试添加一个连接字符串在web.config中,有点像。
<connectionStrings>
<add name="MovieReviewContext"
connectionString="Data Source=.; Integrated Security= true; Initial Catalog=MovieReviewContext;"
providerName="System.Data.SqlClient" />
</connectionStrings>
您应该检查,如果您使用连接到您的SQL服务器,用户必须创建一个在您的SQL Server数据库的权限。 你得到的错误说,你的用户有没有这个权限。
由于消息表明你需要给CREATE DATABASE权限,你已经在你的web.config文件中指定的用户。
- 创建空应用程序
- 添加您的模型(电影,回顾,评论和数据访问层或DDL(资料库)
- 添加控制器
- 添加视图
- 与你的模特属性创建数据库
- 添加连接字符串在web.config中
我想补充这样一个模型方面:
public class Movie
{
public int Id { get; set; }
public string Title { get; set; }
}
public class Review
{
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
public class Comment
{
public int Id { get; set; }
public string Title { get; set; }
}
public class MovieReviewService
{
private MovieContext movieContex;
private ReviewContext reviewContext;
private CommentContext commentContext;
public MovieReviewService(string connectionString)
{
this.movieContex = new MovieContext(connectionString);
this.reviewContext = new ReviewContext(connectionString);
this.commentContext = new CommentContext(connectionString);
}
public void AddMovie(Movie movie)
{
this.movieContex.Add(movie);
}
public void UpdateMovie(Movie movie)
{
this.movieContex.Update(movie);
}
public void DeleteMovie(int id)
{
this.movieContex.Delete(id);
}
public Movie GetMovie(int id)
{
return this.movieContex.Get(id);
}
}
internal class MovieContext : DbContext
{
private DbSet<Movie> Movies { get { return this.Set<Movie>(); } }
internal MovieContext(string connectionString)
: base(connectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Movie>()
.HasKey(key => key.Id);
base.OnModelCreating(modelBuilder);
}
internal void Add(Movie movie)
{
var existing = this.Movies.Find(movie.Id);
if (existing == null)
{
existing.Id++;
existing.Title = movie.Title;
this.Entry<Movie>(existing).State = EntityState.Added;
this.SaveChanges();
}
}
internal void Update(Movie movie)
{
var existing = this.Movies.Find(movie.Id);
if (existing != null)
{
existing.Title = movie.Title;
this.Entry<Movie>(existing).State = EntityState.Modified;
this.SaveChanges();
}
}
internal void Delete(int movieId)
{
var movie = this.Movies.Find(movieId);
if (movie != null)
{
this.Entry<Movie>(movie).State = EntityState.Deleted;
this.SaveChanges();
}
}
internal Movie Get(int movieId)
{
return this.Movies.Find(movieId);
}
internal IEnumerable<Movie> GetAll()
{
return this.Movies;
}
}
internal class ReviewContext : DbContext
{
private DbSet<Review> Movies { get { return this.Set<Review>(); } }
internal ReviewContext(string connectionString)
: base(connectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Review>()
.HasKey(key => key.Id)
.HasMany(comment => comment.Comments);
base.OnModelCreating(modelBuilder);
}
//add your features or action
}
internal class CommentContext : DbContext
{
private DbSet<Comment> Movies { get { return this.Set<Comment>(); } }
internal CommentContext(string connectionString)
: base(connectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Comment>()
.HasKey(key => key.Id);
base.OnModelCreating(modelBuilder);
}
//add your features or action
}
您的应用程序试图O访问数据的基础上,但它不存在。 这当你改变你用于运行应用程序的计算机通常发生。 我做了什么,当我可以在那干脆,“修改数据库”。 在服务器资源管理器,你去你的数据库:
1.右键单击它。
会发生2.drop的下拉菜单中点击修改。
3.Connection屏幕会发生的点击,在底部的确定权。
4.Another屏幕会弹出,如果你想重新创建资料库,这将要求您