使用EF6从现有表中获取数据时出错

时间:2017-07-31 16:56:31

标签: entity-framework asp.net-mvc-4 c#-4.0

我收到的错误是"在数据库中拒绝了CREATE TABLE权限' DTP'"从数据库中的现有表访问数据时。我正在使用EF6。我遵循的步骤是 1)在项目中添加了对Entity框架的引用。 2)在web.config中将连接字符串添加为

<add name="OrderSummaryDatabaseContext" connectionString="data source=XYZ--D1;initial catalog=DTP_Table;user id=xyz;password=xyz;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

3)将数据上下文类定义为

public class OrderSummaryDatabaseContext :DbContext
    {
        public virtual DbSet<Document> Documents { get; set; }

    }

4)定义文档类如下

public class Document
{
public int id { get; set; }

public int clientId { get; set; }

public int? reference { get; set; }

public string format { get; set; }

public string imagePath { get; set; }

public DateTime dateReceived { get; set; }

public DateTime? dateReported { get; set; }

public int? addedByUserId { get; set; }

public short? active { get; set; }

public DateTime? lastChangedDate { get; set; }
}

5)在我的数据层中获取详细信息

    public void GetImageData()
    {
        int orderId = 1426;
        try
        {
            using (var db = new OrderSummaryDatabaseContext())
            {
                var result = db.Documents.Where(x => x.id == orderId).ToList();
            }
        }
        catch (Exception ex)
        {

        }   
    }

但我收到的错误是&#34;&#34;在数据库&#39; DTP&#39;&#34;中拒绝了CREATE TABLE权限。请帮助我,我不想使用EDMX文件。我想在没有那个的情况下这样做

1 个答案:

答案 0 :(得分:0)

如果您不打算使用CodeFirst,则应将其添加到上下文的构造函数中:

public OrderSummaryDatabaseContext()
{
    Database.SetInitializer<OrderSummaryDatabaseContext>(null);
}

这将阻止EntityFramework尝试为您创建表。我不是百分之百确定这里发生了什么,但听起来是EntityFramework正试图根据你的代码为你创建表格,因为你已经创建了表格,它就失败了。