我已经查看了您提供的无法在mvc4中连接到SQL Server 2008的解决方案之一。我按照您的回答,但即使我收到错误。
public class videoDBContext : DbContext
{
static videoDBContext()
{
Database.SetInitializer<videoDBContext>(null);
}
public videoDBContext()
: base("Name=videoDBContext")
{
}
public DbSet<Video> Videos { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new VideoMap());
}
}
域类
public class Video
{
public int Id { get; set; }
public string Description { get; set; }
}
将类映射为
public class VideoMap : EntityTypeConfiguration<Video>
{
public VideoMap()
{
// Primary Key
this.HasKey(t => t.Id);
// Properties
this.Property(t => t.Description)
.IsRequired()
.HasMaxLength(50);
// Table & Column Mappings
this.ToTable("Video");
this.Property(t => t.Id).HasColumnName("Id");
this.Property(t => t.Description).HasColumnName("Description");
}
}
控制器操作为
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
using (videoDBContext context = new videoDBContext())
{
var list = **context.Videos.ToList();**
}
return View();
}
我在线附近收到错误:
Line 20: var s = context.Videos.ToList();
web.config
文件是
<add name="videoDBContext"
connectionString="metadata=res://*/Models.xx.csdl|res://*/Models.xx.ssdl|res://*/Models.xx.msl;provider=System.Data.SqlClient;provider connection string="data source=servername;initial catalog=xx.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
请提供解决方案。我哪里错了?抱歉,如果它很愚蠢或让你感到不便。
答案 0 :(得分:0)
如果您分析连接字符串,您会看到:
connectionString="...provider connection string="data source=servername;
initial catalog=xx.mdf;integrated security=True;
“provider”连接字符串指向服务器servername
(这是正确的吗?)并且似乎试图引用.mdf
文件。
您应该不在制作中执行此操作!您应该使用逻辑数据库名称引用服务器上存在的数据库 - 不要乱用.mdf
个文件!
因此,请将连接字符串更改为:
<add name="videoDBContext"
connectionString="metadata=res://*/Models.xx.csdl|res://*/Models.xx.ssdl|res://*/Models.xx.msl;provider=System.Data.SqlClient;provider connection string="data source=servername;initial catalog=Vedios;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
将initial catalog=Vedios;
包含在EF连接字符串内的provider connection string
深处。