-->

清单表的结果“在数据库中创建否认TABLE权限” ASP.NET - MVC4(Listing

2019-07-19 09:37发布

我使用ASP.NET MVC 4 - C#连接到活动数据库,并列出结果,但是当我去查看它返回以下错误页面:

CREATE TABLE permission denied in database 'DatabaseName'.

Description: An unhandled exception occurred during the execution
of the current web request. Please review the stack trace for more
information about the error and where it
originated in the code.



Exception Details: System.Data.SqlClient.SqlException: CREATE TABLE
permission denied in database 'DatabaseName'.

Source Error: 


Line 16:         public ActionResult Index()
Line 17:         {
Line 18:             return View(db.AccControls.ToList());
Line 19:         }
Line 20

控制器:

namespace TestDBCon.Controllers
{
    public class HomeController : Controller
    {
        private DataDbContext db = new DataDbContext();

        public ActionResult Index()
        {
            return View(db.AccControls.ToList());
        }

    }
}

AccControl.cs(模型)

namespace TestDBCon.Models
{
    public class AccControl
    {
        public int ID { get; set; }
        public int ControlCode { get; set; }
        public string Nominal { get; set; }
        public string CostCentre { get; set; }
        public string Department { get; set; }
    }

    public class DataDbContext : DbContext
    {
        public DbSet<AccControl> AccControls { get; set; }
    }
}

Web.Config中:

<add name="DataDbContext" connectionString="Data Source=***;initial catalog=***;integrated security=True;" providerName="System.Data.SqlClient" />

我并不想创建一个表? 我只是想列出结果让我非常困惑。 它必须是什么做的MVC?

任何帮助将不胜感激!

谢谢

Answer 1:

是您的web config指向正确的数据库?

是的凭据是否正确?

实体框架将在数据库中创建表,如果你要使用MVC4 WebSecutiy()来处理用户的身份验证和授权。 这可以抛出异常。

在这种情况下,你不能创造必要的成员资格提供的表格中,您将需要从系统中排除这一点。 看到这个在这里 。 或者创建一个新的MVC4项目并选择空模板,只是把你所需要的位。



Answer 2:

我知道这是旧的,但因为我有同样的问题,我花了一段时间才能找到解决办法......我决定分享的信息。 所以,我必须做两件事情来摆脱这个问题,第一个是禁用的迁移:

# Migrations/Configuration.cs
internal sealed class Configuration : DbMigrationsConfiguration<IntranetApplication.Models.MyDb1>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }
}

但是这还不够,我还必须确保播种机不会运行。 您可以使用此额外的代码取消它:

#Global.asax.cs
protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    Database.SetInitializer<Models.MyDb1>(null);
    Database.SetInitializer<Models.MyDb2>(null);

    ...
}

后来终于我现在可以做一个SELECT与LINQ和只具有读访问

编辑
按照劳伦斯的建议,这是最有可能更好地直接让它DB上下文构造内。 谢谢你的提示,我更新了我的代码。 它看起来像这个:

public partial class MyDb1 : DbContext
{
    public MyDb1()
        : base("name=MyDb1Connection")
    {
        Database.SetInitializer<Models.MyDb1>(null);
    }

    ...
}


文章来源: Listing table results in “CREATE TABLE permission denied in database” ASP.NET - MVC4