MySql 和 Entity Framework Code First

4

我有一个关于MySql和Entity Framework Code First的问题。

我的连接字符串在web.config.xml文件中。

<add name="EntityContext" connectionString="Server=127.0.0.1; port=8080 Database=simple_crud; Uid=root; Pwd=;" providerName="MySql.Data.MySqlClient" />

我的背景:

public class EntityContext : DbContext
{
    public DbSet<Pessoa> Pessoas { get; set; }
}

我的班级:

[Table("pessoa")]
public class Pessoa
{
    [Key]
    [Column("Id")]
    public int Id { get; set; }

    [Column("Nome")]
    public string Nome { get; set; }
}

我的控制器

public EntityContext db = new EntityContext();

public ActionResult Index()
{
     List<Pessoa> pessoas = db.Pessoas.ToList(); // here is the error
     return View(pessoas);
}

因此,当我按下F5时,会出现这样的提示:"输入字符串格式不正确"。

我错过了什么?

更新

堆栈跟踪:

[FormatException: 输入的字符串格式不正确。] System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +9591147 System.Number.ParseUInt32(String value, NumberStyles options, NumberFormatInfo numfmt) +119 System.String.System.IConvertible.ToUInt32(IFormatProvider provider) +46 System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +9509065 MySql.Data.MySqlClient.MySqlConnectionStringBuilder.ChangeType(Object value, Type t) +240 MySql.Data.MySqlClient.MySqlConnectionStringBuilder.SetValue(String keyword, Object value) +399 MySql.Data.MySqlClient.MySqlConnectionStringBuilder.set_Item(String keyword, Object value) +54 System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value) +127 MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value) +289 System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name) +409 System.Data.Entity.Internal.LazyInternalConnection.Initialize() +49 System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel() +10 System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +265 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +17 System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +62 System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator() +15 System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator() +40 System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +315 System.Linq.Enumerable.ToList(IEnumerable`1 source) +58 SimpleMysqlCrud.Controllers.PessoaController.Index() in f:\users\pablo.rocha.fti\documents\visual studio 2010\Projects\SimpleMysqlCrud\SimpleMysqlCrud\Controllers\PessoaController.cs:16 lambda_method(Closure , ControllerBase , Object[] ) +62 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +208 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27 System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +55 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +263 System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +191 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343 System.Web.Mvc.Controller.ExecuteCore() +116 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10 System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37 System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult result) +12 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50 System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8970141 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

哪一行是异常的? - D Stanley
1
你忘记在 port=8080 后面加上分号了,对吧? - Andrey Voloshin
@AndreyVoloshin,请给我一个例子。 - Pablo
请同时发布堆栈跟踪。 - D Stanley
你确定你的数据库端口不是3306吗?(MySQL标准) - Andrey Voloshin
显示剩余3条评论
2个回答

2

将所有评论整合到答案中。

在port=3306后添加分号,并检查您的mysql监听端口(可能是3306,mysql默认端口?)。最终连接字符串:

<add name="EntityContext" connectionString="Server=127.0.0.1; port=3306; Database=simple_crud; Uid=root; Pwd=;" providerName="MySql.Data.MySqlClient" />

端口是默认的。不需要设置。 - Muhamed Shafeeq

0

MySql 默认端口是3306,所以这里不需要提及。

例如:

<add name="DefaultConnection" providerName="MySql.Data.MySqlClient" connectionString="SERVER=localhost;DATABASE=testdb;UID=test;PASSWORD=test123;" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接