Asp.net 无法获取EF5.0 codefirst迁移以生成初始数据库
我正在编写我的第一个web应用程序,并试图先学习EF5.0代码。我在谷歌和MSDN上花了两天的时间,试图找出如何让这些东西发挥作用,但没有一个是真正适合初次学习者的。所以,有人能帮我用代码示例说明我做错了什么吗?当我在debug中运行我的应用程序时,没有创建数据库,当我尝试从VS2012的包管理器配置迁移时,我收到一个错误,上面写着“从数据库获取提供程序信息时出错”。打击的是我的“table”.cs文件、Context.cs和web.config。从我所读到的所有东西来看,我没有遗漏任何东西 表1.cs:Asp.net 无法获取EF5.0 codefirst迁移以生成初始数据库,asp.net,web-applications,entity-framework-5,Asp.net,Web Applications,Entity Framework 5,我正在编写我的第一个web应用程序,并试图先学习EF5.0代码。我在谷歌和MSDN上花了两天的时间,试图找出如何让这些东西发挥作用,但没有一个是真正适合初次学习者的。所以,有人能帮我用代码示例说明我做错了什么吗?当我在debug中运行我的应用程序时,没有创建数据库,当我尝试从VS2012的包管理器配置迁移时,我收到一个错误,上面写着“从数据库获取提供程序信息时出错”。打击的是我的“table”.cs文件、Context.cs和web.config。从我所读到的所有东西来看,我没有遗漏任何东西 表
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace FFCollection.DAL
{
public class Item
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int16 ItemID { get; set; }
[Required(ErrorMessage = "Item Name is required.")]
[Column("ItemName")]
public string Name { get; set; }
public Int16 RegionID { get; set; }
public virtual Region Region { get; set; }
}
}
Context.cs:
using System.Data.Entity;
namespace FFCollection.DAL
{
public class FullContext : DbContext
{
public FullContext() : base("FFCollection") { }
public DbSet<Item> Items { get; set; }
}
}
使用System.Data.Entity;
命名空间FFCollection.DAL
{
公共类FullContext:DbContext
{
public FullContext():基(“FFCollection”){}
公共数据库集项{get;set;}
}
}
web.confg:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="CollectionDB"
connectionString="Data Source=192.198.0.2; Initial Catalog=FFColection; User ID=; Password=!" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<customErrors mode="Off" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
我知道这个地方应该只适合那些经验丰富的人,他们有多年的提问经验,但我找不到有帮助的地方,我迷路了,所以我真的需要一些帮助才能跳到哪里。如果有人能帮我弄清楚为什么数据库没有被创建,我可以继续我的代码体验first EF 5.0试试这个:
<add name="FFColection"
connectionString="Data Source=192.198.0.2;
Initial Catalog=FFColection;
User ID=; Password=***;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient"/>
构造函数base(“FFCollection”)
将字符串参数作为完整连接字符串或配置文件中连接字符串的名称。因此,构造函数和名称中应该是“ffcollection”
也许服务器的地址不够。您可能必须附加sql server实例的名称,如
192.198.0.2\sql2008
(请与数据库计算机上的sql server management studio联系)。代码已写入。问题是EF在首次尝试访问数据库之前不会创建数据库。因此,我不得不在index.aspx页面中添加一些代码,以尝试向数据库中添加一项。这导致它创建了数据库您可以尝试将以下内容添加到连接字符串条目providerName=“System.Data.SqlClient”
中,使其看起来像这样吗?顺便说一句。我不认为stackoverflow只适用于有经验的人…@Pawel补充道,这给了我一个错误:“从数据库获取提供程序信息时发生了一个错误。这可能是由于实体框架使用了不正确的连接字符串造成的。有关详细信息,请检查内部异常,并确保连接字符串正确。”但是我只有一个连接字符串,所以EF不应该默认为那个字符串,或者我必须在某个地方声明它吗?我注意到了拼写错误并更正了它。这修复了错误消息,但仍然没有生成DB。我从来没有指定过实例名称,只是为了测试,我给出了我的生产服务器的IP,它在一个没有实例名称的现有网站上工作,但仍然没有创建任何数据库。或者context.database.Create()
:)我在查找查询数据库的简单方法时遇到了这个问题,但不确定将它放在哪里(当时正在考虑Global.asax,但由于数据库不是默认Global.asax页面中的上下文选项,因此无法准确地确定需要什么)