我第一次使用实体框架(代码优先)。我创建了一个上下文类,代码如下。
public class ContactContext : DbContext
{
public ContactContext()
: base("DBConnectionString")
{
Database.SetInitializer<ContactContext>(new DropCreateDatabaseIfModelChanges<ContactContext>());
}
public DbSet<Contact> Contacts { get; set; }
}
Web.config文件:
<add name="ContactMgrDBContext" connectionString="Data Source=(Local);Initial Catalog=ContactsDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
控制器类:
public class ContactController : Controller
{
ContactContext db = new ContactContext();
// // 获取:/联系人/
public JsonResult ContactList(int? selectedContact)
{
IQueryable<Contact> contacts = db.Contacts;
//contacts.ToList()
var contactsJson = JsonConvert.SerializeObject(contacts.ToList());
return Json(contactsJson, JsonRequestBehavior.AllowGet);
}
在调试模式下运行应用程序时,我在这个语句处遇到了以下异常。
var contactsJson = JsonConvert.SerializeObject(contacts.ToList());
出现了类型为'System.Data.ProviderIncompatibleException'的异常,该异常位于EntityFramework.dll中,但在用户代码中未被处理 附加信息: 在从数据库获取提供程序信息时发生错误。这可能是由于Entity Framework使用了不正确的连接字符串所致。请查看内部异常以获取详细信息,并确保连接字符串正确。
联系人类代码:
public class Contact
{
[Key]
public int ContactId { get; set; }
[Required, MaxLength(100)]
public string FirstName { get; set; }
[Required, MaxLength(100)]
public string LastName { get; set; }
public string EMail { get; set; }
public string Phone { get; set; }
public string BusinessName { get; set; }
}