MVC收到错误 - 创建数据库权限被拒绝(MVC Getting Error - CREATE DA

2019-10-20 16:46发布

我使用MVC第一次,运行应用程序时,我得到这个错误。

这里是我的步骤。

  1. 创建一个新的MVC空项目
  2. 安装实体框架5.0.0(PM>安装,包装的EntityFramework -Version 5.0.0)
  3. 在型号 - MovieReview.cs和MovieReviewContext.cs添加两班。

MovieReview类是这样的

而MovieReviewContext类是这样的

  1. 在Controllers文件夹我添加一个新的控制器,名为HomeController的。 就这个

然后,我在谷歌Chrome或IE浏览器上运行。 而我得到了我在上面提到的错误。 搞不明白该怎么做。 谢谢你的帮助

编辑我没有在任何文件中的任何改变自动生成的代码。

Answer 1:

尝试添加一个连接字符串在web.config中,有点像。

  <connectionStrings>
    <add name="MovieReviewContext" 
         connectionString="Data Source=.; Integrated Security= true; Initial Catalog=MovieReviewContext;" 
         providerName="System.Data.SqlClient" />
  </connectionStrings>


Answer 2:

您应该检查,如果您使用连接到您的SQL服务器,用户必须创建一个在您的SQL Server数据库的权限。 你得到的错误说,你的用户有没有这个权限。



Answer 3:

由于消息表明你需要给CREATE DATABASE权限,你已经在你的web.config文件中指定的用户。



Answer 4:

  • 创建空应用程序
  • 添加您的模型(电影,回顾,评论和数据访问层或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
}


Answer 5:

您的应用程序试图O访问数据的基础上,但它不存在。 这当你改变你用于运行应用程序的计算机通常发生。 我做了什么,当我可以在那干脆,“修改数据库”。 在服务器资源管理器,你去你的数据库:

1.右键单击它。

会发生2.drop的下拉菜单中点击修改。

3.Connection屏幕会发生的点击,在底部的确定权。

4.Another屏幕会弹出,如果你想重新创建资料库,这将要求您



Answer 6:

你写的代码很好,没有问题。

  1. 您应该检查你已经写在web.config中应该是相同地方的DbContext继承,这意味着你的connectionString名称应为“MovieReviewContext”之类名称的连接字符串名称。
  2. 检查哪些具有或不具有创建数据库DB用户权限

希望这项工作很好



文章来源: MVC Getting Error - CREATE DATABASE permission denied