微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用实体框架和SQL Server数据库访问ASP.NET MVC Web应用程序中的数据

如何解决无法使用实体框架和SQL Server数据库访问ASP.NET MVC Web应用程序中的数据

在ASP.NET MVC Web应用程序中,我创建了以下实体:

[Table("tblEmployee")]
public class Employee
{
    public int EmployeeId { get; set; }
    public string Name { get; set; }
    public string Gender { get; set; }
    public string City { get; set; }
}

但是,当我尝试使用实体框架从名为tblEmployee数据库表中检索数据时,出现错误。到目前为止,我所做的是:

  • 使用“。”创建数据库MVCDemo。作为服务器名称,并使用Windows身份验证包含一个名为tblEmployee
  • 的表
  • 已安装的实体框架
  • EmployeeContext.cs文件添加Models文件夹中

代码

namespace MVCDemo.Models
{
    public class EmployeeContext : DbContext
    {
        public DbSet<Employee> Employees { get; set; }
    }
} 
  • 在根目录中的web.config文件添加了连接字符串

     <connectionSrtings>
         <add name="EmployeeContext" 
              connectionString="server=.; database=MVCDemo; integrated security=sspI"
              providerName="System.Data.sqlClient;" />
     </connectionSrtings>
    
  • 将详细信息actionResult添加到EmployeeController以显示员工详细信息:

      namespace MVCDemo.Controllers
      {
          public class EmployeeController : Controller
          {
              // GET: Employee
              public ActionResult Details(int id)
              {
                  EmployeeContext employeeContext = new EmployeeContext();
                  Employee employee = employeeContext.Employees.Single(e => e.EmployeeId == id);
                  return View(employee);
              }
          }
      }
    

最后,我将以下代码添加Global.asax中以防止初始化:

Database.Setinitializer<MVCDemo.Models.EmployeeContext>(null);

问题是当我运行应用程序时出现此错误

HTTP错误500.19-内部服务器错误

无法访问请求的页面,因为该页面的相关配置数据无效。

当我注释掉连接字符串并尝试连接

http://localhost:60613/Employee/Details/1 

显示第一雇员的详细信息,我会收到此错误

System.Data.Entity.Core.EntityException:'基础提供程序在打开时失败。'sqlException:无法附加文件'C:\ Users \ arya \ source \ repos \ MVCDemo \ MVCDemo \ App_Data \ MVCDemo.Models。 EmployeeContext.mdf”作为数据库“ MVCDemo.Models.EmployeeContext”。

解决方法

检查您的标签名称,这是不正确的。肯定会触发错误。

Sub GetDataFromExclFileOnSP()
    Const SPURL As String = "https://contoso.sharepoint.com/teams/myTeam/"
    Const SPFld As String = "mySpFolderName"
    Const myFileName As String = "mySpFileName.xlsx"
    Dim srcFileStr As String
    Dim cn As Object
    
    Set cn = CreateObject("ADODB.Connection")
    srcFileStr = GetWebDavStr(SPURL & "/" & SPFld & "/" & myFileName)
    'GetWebDavStr converts the SP url string into a WebDav string
    '\\contoso.sharepoint.com@ssl\teams\myTeam\mySpFolderName\mySpFileName.xlsx
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & srcFileStr & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    'rest of code
End Sub

应该是:

<connectionSrtings>

更新: 由于您还有其他问题,请修复连接字符串的最后一部分:

<connectionStrings>

删除SqlClient末尾的分号。

,

首先,我看不到您的数据库连接。是的,您已经教过表格,但是您没有告诉程序将这些信息放在哪里。像这样:

optionsBuilder.UseSqlServer("Data Source=databaseName") 

第二个可能的原因是您的程序不知道从头开始。我之前遇到这些错误,并使用默认地图解决了该问题。

第三个原因,这可能不正确,但是您写了“ connectionSrtings”错误。正如我所说,可能不是那样,但是我想提一提。

,

这是因为如果您在MVCDemo中有一个名为SQL Server的数据库,那么它就可以了,否则,可以通过代码优先的方法在SQL Server中寻找MVCDemo数据库。如果您在SQL Server中没有数据库,请尝试使用此connection string首先创建mdf文件。

connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MVCDemo-20200820010246.mdf;Initial Catalog=aspnet-MVCDemo-20200820010246;Integrated Security=True"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。